Problems displaying rowspan in dompdf and cakephp

I searched the Internet for a solution to my problem. I am currently using CakePhp + dompdf to create a PDF file. It works fine on regular tables, but when I add rowspans and colspans, it creates a table, but the borders break.

This is my HTML markup for creating a PDF:

<style>table{border-collapse:collapse;}.rows td{border:1px solid brown;</style>
<table class="sub_cat_table">
    <tbody><tr class="rows">
        <td colspan="2">カテゴリ</td>
            <td>重要度</td>
            <td>実現度</td>
            <td colspan="2">項目(キーワード)</td>
            <td colspan="2">重要度</td>
            <td colspan="2">実現度</td>
            <td colspan="2">格差</td>
        </tr>
        <tr class="rows">
            <td rowspan="2" class="sub_cat_letter"> A </td>
            <td rowspan="2" class="sub_cat_name">Situation</td>
            <td rowspan="2" class="sub_cat_imp">3.5</td>
            <td rowspan="2" class="sub_cat_pos">2.0</td>                                            
        </tr>
        <tr class="rows">
            <td class="sub_cat_number">1</td>
            <td class="sub_cat_name">Complete</td>
            <td class="sub_cat_imp_inner">3.0</td>
            <td class="sub_cat_imp_inner"></td>
            <td class="sub_cat_imp_inner">2.0</td>
            <td class="sub_cat_imp_inner"></td>
            <td class="sub_cat_imp_inner">-1</td>
            <td class="sub_cat_imp_inner"></td>
        </tr>
        <tr class="rows">
            <td class="sub_cat_number">2</td>
            <td class="sub_cat_name">Access</td>
            <td class="sub_cat_imp_inner">4.0</td>
            <td class="sub_cat_imp_inner"></td>
            <td class="sub_cat_imp_inner">2.0</td>
            <td class="sub_cat_imp_inner"></td>
            <td class="sub_cat_imp_inner">-2</td>
            <td class="sub_cat_imp_inner"></td>
        </tr>
        <tr class="rows">
            <td rowspan="3" class="sub_cat_letter">B</td>
            <td rowspan="3" class="sub_cat_name">Technology</td>
            <td rowspan="3" class="sub_cat_imp">3.4</td>
            <td rowspan="3" class="sub_cat_pos">1.9</td>                                            
        </tr>
        <tr class="rows">
            <td class="sub_cat_number">3</td>
            <td class="sub_cat_name">Quality</td>
            <td class="sub_cat_imp_inner">3.7</td>
            <td class="sub_cat_imp_inner"></td>
            <td class="sub_cat_imp_inner">1.7</td>
            <td class="sub_cat_imp_inner"></td>
            <td class="sub_cat_imp_inner">-2</td>
            <td class="sub_cat_imp_inner"></td>
        </tr>
        <tr class="rows">
            <td class="sub_cat_number">4</td>
            <td class="sub_cat_name">Access</td>
            <td class="sub_cat_imp_inner">3.0</td>
            <td class="sub_cat_imp_inner"></td>
            <td class="sub_cat_imp_inner">2.0</td>
            <td class="sub_cat_imp_inner"></td>
            <td class="sub_cat_imp_inner">-1</td>
            <td class="sub_cat_imp_inner"></td>
        </tr>
    </tbody>
</table>

Screen printing in HTML format (sorry, the table has a border above):

enter image description here

Screen printing when creating PDF in dompdf:

enter image description here

I tried to play with the file dompdf/includes/cellmap.cls.php, but I cannot get it to work.

I have already tried these solutions here:

And some links that I already forgot. Any advice or workarounds are greatly appreciated.

+4
3

, dompdf PDF , . :

<table border="1">
  <tr>
    <td rowspan="3">&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>

enter image description here

+2

"", tcpdf. , html pdf, , , PDF.

, :

<?php


// Include the main TCPDF library (search for installation path).
require_once('../tcpdf.php');

// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);


// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// set some language-dependent strings (optional)
if (file_exists(dirname(__FILE__).'/lang/eng.php')) {
    require_once(dirname(__FILE__).'/lang/eng.php');
    $pdf->setLanguageArray($l);
}

// ---------------------------------------------------------

// set default font subsetting mode
$pdf->setFontSubsetting(true);

// Set font
// dejavusans is a UTF-8 Unicode font, if you only need to
// print standard ASCII chars, you can use core fonts like
// helvetica or times to reduce file size.
$pdf->SetFont('dejavusans', '', 6, '', true);

// Add a page
// This method has several options, check the source code documentation for more information.
$pdf->AddPage();

// set text shadow effect
//$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));

// Set some content to print
$html = <<<EOD
<style>table{border-collapse:collapse;}.rows td{border:1px solid brown;</style>
<table class="sub_cat_table">
    <tbody><tr class="rows">
        <td colspan="2">カテゴリ</td>
            <td>重要度</td>
            <td>実現度</td>
            <td colspan="2">項目(キーワード)</td>
            <td colspan="2">重要度</td>
            <td colspan="2">実現度</td>
            <td colspan="2">格差</td>
        </tr>
        <tr class="rows">
            <td rowspan="2" class="sub_cat_letter"> A </td>
            <td rowspan="2" class="sub_cat_name">Situation</td>
            <td rowspan="2" class="sub_cat_imp">3.5</td>
            <td rowspan="2" class="sub_cat_pos">2.0</td>
        </tr>
        <tr class="rows">
            <td class="sub_cat_number">1</td>
            <td class="sub_cat_name">Complete</td>
            <td class="sub_cat_imp_inner">3.0</td>
            <td class="sub_cat_imp_inner"></td>
            <td class="sub_cat_imp_inner">2.0</td>
            <td class="sub_cat_imp_inner">  ●</td>
            <td class="sub_cat_imp_inner">-1</td>
            <td class="sub_cat_imp_inner"></td>
        </tr>
        <tr class="rows">
            <td class="sub_cat_number">2</td>
            <td class="sub_cat_name">Access</td>
            <td class="sub_cat_imp_inner">4.0</td>
            <td class="sub_cat_imp_inner"></td>
            <td class="sub_cat_imp_inner">2.0</td>
            <td class="sub_cat_imp_inner">● </td>
            <td class="sub_cat_imp_inner">-2</td>
            <td class="sub_cat_imp_inner"></td>
        </tr>
        <tr class="rows">
            <td rowspan="3" class="sub_cat_letter">B</td>
            <td rowspan="3" class="sub_cat_name">Technology</td>
            <td rowspan="3" class="sub_cat_imp">3.4</td>
            <td rowspan="3" class="sub_cat_pos">1.9</td>
        </tr>
        <tr class="rows">
            <td class="sub_cat_number">3</td>
            <td class="sub_cat_name">Quality</td>
            <td class="sub_cat_imp_inner">3.7</td>
            <td class="sub_cat_imp_inner"></td>
            <td class="sub_cat_imp_inner">1.7</td>
            <td class="sub_cat_imp_inner"></td>
            <td class="sub_cat_imp_inner">-2</td>
            <td class="sub_cat_imp_inner">▼ </td>
        </tr>
        <tr class="rows">
            <td class="sub_cat_number">4</td>
            <td class="sub_cat_name">Access</td>
            <td class="sub_cat_imp_inner">3.0</td>
            <td class="sub_cat_imp_inner"></td>
            <td class="sub_cat_imp_inner">2.0</td>
            <td class="sub_cat_imp_inner">● </td>
            <td class="sub_cat_imp_inner">-1</td>
            <td class="sub_cat_imp_inner"></td>
        </tr>
    </tbody>
</table>
EOD;

// Print text using writeHTMLCell()
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);

// ---------------------------------------------------------

// Close and output PDF document
// This method has several options, check the source code documentation for more information.
$pdf->Output('example_001.pdf', 'I');

//============================================================+
// END OF FILE
//============================================================+
0

rowspan, , , .

table {
  border-collapse: collapse;
}

.rows td {
  border: 1px solid brown;
}
<table class="sub_cat_table">
  <tbody>
    <tr class="rows">
      <td colspan="2">カテゴリ</td>
      <td>重要度</td>
      <td>実現度</td>
      <td colspan="2">項目(キーワード)</td>
      <td colspan="2">重要度</td>
      <td colspan="2">実現度</td>
      <td colspan="2">格差</td>
    </tr>
    <tr class="rows">
      <td rowspan="2" class="sub_cat_letter"> A </td>
      <td rowspan="2" class="sub_cat_name">Situation</td>
      <td rowspan="2" class="sub_cat_imp">3.5</td>
      <td rowspan="2" class="sub_cat_pos">2.0</td>
      <td class="sub_cat_number">1</td>
      <td class="sub_cat_name">Complete</td>
      <td class="sub_cat_imp_inner">3.0</td>
      <td class="sub_cat_imp_inner">&nbsp;</td>
      <td class="sub_cat_imp_inner">2.0</td>
      <td class="sub_cat_imp_inner"></td>
      <td class="sub_cat_imp_inner">-1</td>
      <td class="sub_cat_imp_inner"></td>
    </tr>
    <tr class="rows">
      <td class="sub_cat_number">2</td>
      <td class="sub_cat_name">Access</td>
      <td class="sub_cat_imp_inner">4.0</td>
      <td class="sub_cat_imp_inner">&nbsp;</td>
      <td class="sub_cat_imp_inner">2.0</td>
      <td class="sub_cat_imp_inner"></td>
      <td class="sub_cat_imp_inner">-2</td>
      <td class="sub_cat_imp_inner"></td>
    </tr>
    <tr class="rows">
      <td rowspan="2" class="sub_cat_letter">B</td>
      <td rowspan="2" class="sub_cat_name">Technology</td>
      <td rowspan="2" class="sub_cat_imp">3.4</td>
      <td rowspan="2" class="sub_cat_pos">1.9</td>
      <td class="sub_cat_number">3</td>
      <td class="sub_cat_name">Quality</td>
      <td class="sub_cat_imp_inner">3.7</td>
      <td class="sub_cat_imp_inner">&nbsp;</td>
      <td class="sub_cat_imp_inner">1.7</td>
      <td class="sub_cat_imp_inner">&nbsp;</td>
      <td class="sub_cat_imp_inner">-2</td>
      <td class="sub_cat_imp_inner"></td>
    </tr>
    <tr class="rows">
      <td class="sub_cat_number">4</td>
      <td class="sub_cat_name">Access</td>
      <td class="sub_cat_imp_inner">3.0</td>
      <td class="sub_cat_imp_inner">&nbsp;</td>
      <td class="sub_cat_imp_inner">2.0</td>
      <td class="sub_cat_imp_inner"></td>
      <td class="sub_cat_imp_inner">-1</td>
      <td class="sub_cat_imp_inner">&nbsp;</td>
    </tr>
  </tbody>
</table>
Hide result
0

All Articles