web-dev-qa-db-ja.com

DomPDFがテーブルを適切にレンダリングしない

DomPDFを使用してPDF=を取得しようとしていますが、奇妙な問題が発生しました。すべてのデータやその他の問題はありませんが、PDFテーブルの行は常にスタイルから外れています。最初に、テーブルが次のページに移動してスタイルのコンテキストが失われる可能性がありますが、テーブルを1ページに制限しようとしたところ、問題がまだ残っていることがわかりました。すべてのページの表の最初の行がおかしくなっています。以下は、私のコードとPDFのスクリーンショットです。

コントローラ

$dompdf = new DOMPDF();
$dompdf->load_html($listing);
$dompdf->set_paper('a4', 'landscape');
$dompdf->render();
$dompdf->stream("sample.pdf");

ビュー

<table class="table table-bordered">
    <tr>
        <th width="150">Client </th>
        <td>Client Name </td>
    </tr>

    <tr>
        <th>Site </th>
        <td><?php print $site->title; ?></td>
    </tr>

    <tr>
        <th>Address </th>
        <td>
            <?php 
                print $site->unit.' '.
                $site->street.' '.
                $site->suburb.' '.
                $site->state.' '.
                $site->location; 
            ?>
        </td>
    </tr>

    <tr>
        <th>Post Code </th>
        <td><?php print $site->postcode; ?></td>
    </tr>
    <tr>
        <th colspan="2"> Site Information</th>
    </tr>
    <tr>
        <td colspan="2" height="150"> <?php print $site->site_information; ?></td>
    </tr>
    <tr>
        <th colspan="2">Work Instruction</th>
    </tr>
    <tr>
        <td colspan="2" height="200"> <?php print $site->work_instruction; ?></td>
    </tr>
    <tr>
        <th colspan="2">Equipment on Site</th>
    </tr>
    <tr>
        <td colspan="2"> <?php print $site->site_equipment; ?></td>
    </tr>
    <tr>
        <th colspan="2">Special Instructions</th>
    </tr>
    <tr>
        <td colspan="2" height="100"> <?php print $site->special_instruction; ?></td>
    </tr>
    <tr>
        <th>Contact Person </th>
        <td><?php print $site->contact_person; ?></td>
    </tr>
    <tr>
        <th>Contact Number </th>
        <td><?php print $site->contact_no; ?></td>
    </tr>
</table>

ページ1: enter image description here

ページ2: enter image description here

どんな助けも高く評価されます。ありがとう

14
RK.

私が使う

thead:before, thead:after { display: none; }
tbody:before, tbody:after { display: none; }

ほぼ間違いなく、問題はBootstrapの使用です。 Bootstrapに関連するdompdfの問題の多くは、:before/:after宣言。この特定のケースでは、dompdfに次のCSSを適用することで問題を回避できると思います。

tbody:before, tbody:after { display: none; }
11
BrianS