現在のバージョンの 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 ライブラリです (この場合、間違っている場合は訂正してください)。