3

私はTCPDF(HTMLで出力)を使い始めたばかりで、以下のようなボーダーのインラインCSSスタイルを持てない理由がわかりません。

style="border-right: 1px"

いくつかの例を見た後、ボーダーが使用されている唯一の場所は、border="1" プロパティを使用しているテーブルです。これは非常にイライラさせられます。「border」などの古い HTML 属性の代わりにすべてのインライン CSS を使用する方法があることを願っています。

助けてくれてありがとう、メトロポリス

4

5 に答える 5

7

バージョン 5.7 以降の TCPDF ( http://www.tcpdf.org ) には、CSS ボーダーの完全なサポートが含まれているため、更新するだけで済みます。とにかく、境界線を正しく設定することを忘れないでください。

例えば:

border-right: 1px solid black;
于 2010-08-06T11:00:07.783 に答える
3

現在のバージョンの tcpdf には css ボーダー定義が組み込まれているように見えるため、この回答は非推奨です。これは、古い tcpdf をまだ使用していて切り替えられない場合にのみ使用してください。

また、最近のプロジェクトで writeHtml 関数を使用していますが、計算された位置に線を引くことは現実的な選択肢ではありませんでした。そのため、td div タグを tr に 1 ピクセルの黒い境界線を有効にするための小さなハックを作成しました。

tcpdf クラスに 2 つの変更を加える必要があります (または、tcpdf から継承する独自の pdf クラスで writeHtml 関数をオーバーライドします)。

したがって、次を探してください。

if (isset($dom[$key]['content'])) {
    $cell_content = $dom[$key]['content'];
} else {
    $cell_content = ' ';
}

その後、次のものが含まれます。

if (isset($dom[$key]['attribute']['border'])) {
    $cell_borderHack = $dom[$key]['attribute']['border'];
} elseif (isset($dom[$trid]['attribute']['border'])) {
    $cell_borderHack = $dom[$trid]['attribute']['border'];
} else {
    $cell_borderHack = false;
}

そして見つけます:

$this->MultiCell($cellw, $cellh, $cell_content, false, $lalign, false, 2, '', '', true, 0, true);

そしてそれを次のように置き換えます:

$this->MultiCell($cellw, $cellh, $cell_content, $cell_borderHack, $lalign, false, 2, '', '', true, 0, true);

これらの変更を行った後、"TRBL" の組み合わせを html タグの border 属性に入れるだけで、上、左、右、下の境界線を定義することが可能になります。例: -> は、このテーブル セルの上部と左側の 1 ピクセルの黒一色の境界線をレンダリングします。

これが有効な HTML とはかけ離れていることは承知しています :J ですが、多くの時間と手間を省くことができました。

また、utf-8 のサポートがないために dompdf を使用しないのには十分な理由があることにも言及する必要があります。特に多言語データベースから Pdf を生成している場合は、さらに大きな問題が発生するでしょう。

Tcpdf は、問題なく utf-8 を処理できる唯一の PHP ライブラリです (この場合、間違っている場合は訂正してください)。

于 2010-07-01T09:41:56.330 に答える
2

TCPDF 5.9.010 (2010-10-27) - テーブルの CSS プロパティ 'border-spacing' および 'padding' のサポートが追加されました。この記事を書いている時点での最新バージョン: TCPDF 5.9.034 (2010-12-19)

于 2011-01-03T05:36:46.517 に答える
1

このような奇妙なことですが、Line メソッドを使用して自分で境界線を引くことができます。

$style = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0));
$this->Line(x1, y1, x2, y2, $style);
于 2013-04-22T11:15:59.327 に答える
0

残念ながら、TCPDF は完全な CSS をサポートしていません。誰かがこれを修正する手っ取り早い魔法を手に入れるか、開発者自身が次のバージョンで互換性を持たせてくれることを願っています。

于 2010-04-25T04:23:21.640 に答える