web-dev-qa-db-ja.com

html2pdfでborder-collapseが機能しないのはなぜですか?

次のようなhtmlテーブルを使用してPDFを作成したいと思います。 tableEx

だから、私はこのhtmlを作成しました:

<table style="width: 100%; border:2px solid; border-collapse: collapse; padding: 0; margin: 0;">
    <tr style="border-bottom: 1px solid;">
        <th style="border-left: 1px solid; width: 60%;">Ref produit</th>
        <th style="border-left: 1px solid; width: 10%;">Taille</th>
        <th style="border-left: 1px solid; width: 10%;">Quantit�</th>
        <th style="border-left: 1px solid; width: 10%;">Prix net HT</th>
        <th style="border-left: 1px solid; width: 10%;">Montant HT</th>
    </tr>
    <tr>
        <td style="border-left: 1px solid;">BAL100</td>
        <td style="border-left: 1px solid; text-align: center;">S</td>
        <td style="border-left: 1px solid; text-align: center;">20</td>
        <td style="border-left: 1px solid; text-align: center;">22.00</td>
        <td style="border-left: 1px solid; text-align: center;">440</td> 
    </tr>
    <tr>
    .
    .
    .
    </tr>
</table>

PDFの結果は次のとおりです。

enter image description here

国境が消えた!

プロパティを削除するとborder-collapse: collapse;境界線は表示されますが、結果は適切ではありません。

公式フォーラム (フランス語の投稿)で、プロパティborder-collapseはタグtableでのみ機能することがわかります。そのため、テーブルが正しく生成されない理由がわかりません。

何か案が?

これがPDFを生成するための私のphpコードです

$html2pdf = new HTML2PDF('P','A4','fr');
$html2pdf->WriteHTML($htmlContent);
$html2pdf->Output($path, 'F');
21
R3tep

border-collapse: collapse;は、同じ隣接する2つの境界線をマージすることになっています。 html2pdfで使用する場合は、border-left属性とborder-right属性の両方を(同じものとして)スタイル設定する必要があります。これを折りたたむと、単一の境界線が生成されます。また、このCSSを防御的に記述し、border-color属性の継承を想定しないようにするには、border: 1px solid black;などの境界を定義するときに技術的に指定する必要があります。

6
andrewgu

Cssプロパティを置き換えると、回避策が見つかりましたborder-collapse: collapse; 沿って cellspacing="0"結果はOKに見えます。

<table cellspacing="0" style="width: 100%; border:2px solid;position: relative;">
10
R3tep