2017-01-19 74 views
0

我有一個php表格,其中包含有關特定號碼結算的信息。生成此表後,我使用mpdf將其導出爲pdf。 如果表格有一定數量的行,它會以奇怪的方式破壞頁面,導致頁眉在沒有行的下一頁上重複。 下面是表的格式:php表格中斷頁面在下一頁沒有行

表中包含最多3頭裏面<thead>標籤,就像這樣:

<table class="items" width="100%" style="font-size: 9pt; border-collapse: collapse;" cellpadding="8"> 
    <thead> 
     <tr> 
      <td width="30.3%">Forbrug</td> 
      <td width="23.1%">Periode</td> 
      <td width="10.76%">Tid/MB</td> 
      <td width="9.28%">Enheder</td> 
      <td width="12.9%" align="right">I alt</td> 
      <td width="13.3%" align="right">I alt+<b>moms</b></td> 
     </tr> 
    </thead> 

行的同時,添加從數據庫中以這種方式..沒什麼特別

<tr> 
    <td>'.$produktNameFromDatabase.'</td> 
    <td>'.$periodeFromDatabase.'</td> 
    <td>'.$tidMbFromDatabase.'</td> 
    <td>'.$enhederFromDatabase.'</td> 
    <td align="right">'.number_format((float)$produktpris, 2, ',', '.').' kr.</td> 
    <td align="right"><b>'.number_format((float)$produktpris*(1 + (0.25 * $moms)) - $momsDiscount, 2, ',', '.').' kr.</b></td> 
</tr> 

與總線在端部

 <tr> 
      <td class="blanktotal" colspan="1" rowspan="6"></td> 
      <td class="blanktotal" colspan="1" rowspan="6"></td> 
      <td class="totals" colspan="2">Subtotal:</td> 
      <td class="totals" colspan="2">'.number_format((float)$pris1, 2, ',', '.').' kr.</td> 
     </tr> 
     <tr> 
      <td class="totals1" colspan="2">Moms:</td> 
      <td class="totals1" colspan="2">'.number_format((float)$pris1*(0.25 * $moms) - $momsTotal, 2, ',', '.').' kr.</td> 
     </tr> 
     <tr> 
      <td class="totals1" colspan="2"><b>TOTAL:</b></td> 
      <td class="totals1" colspan="2"><b>'.number_format((float)$pris1*(1 + (0.25 * $moms)) - $momsTotal, 2, ',', '.').' kr.</b></td> 
     </tr> 
    </tbody> 
</table> 

!!!現在你已經看到的所有事情,包括總數都是桌子的一部分!

這裏是我有MPDF設置:

在PHP中:

$mpdf=new mPDF('win-1252','A4','','',20,15,48,25,10,10); 
$mpdf->useOnlyCoreFonts = true; // false is default 
$mpdf->SetProtection(array('print')); 
$mpdf->SetTitle("Suggestive Title"); 
$mpdf->SetAuthor("Author"); 
$mpdf->SetWatermarkText("Faktura"); 
$mpdf->showWatermarkText = true; 
$mpdf->watermark_font = 'DejaVuSansCondensed'; 
$mpdf->watermarkTextAlpha = 0.1; 
$mpdf->SetDisplayMode('fullpage'); 

在HTML:

$html .= '<!--mpdf 
    <htmlpageheader name="myheader"> 
     <table width="100%"><tr> 
      <td width="50%" style="color:#000000;"> 
       <span style="font-weight: bold; font-size: 14pt;"> 
        Company Name 
       </span> 
       Company Information 
      </td> 
      <td width="50%" style="text-align: right;"> 
       <img src="image.jpg" /> 
        Invoice Information <br />Side: {PAGENO} af {nb} 
       </td> 
     </tr></table> 
    </htmlpageheader> 

    <htmlpagefooter name="myfooter"> 
     <div style="border-top: 1px solid #000000; font-size: 9pt; text-align: center; padding-top: 3mm; "> 
      Footer Stuff 
     </div> 
     <div style="font-size: 9pt; text-align: center;"> 
      Other Footer Stuff 
     </div> 
    </htmlpagefooter> 

    <sethtmlpageheader name="myheader" value="on" show-this-page="1" /> 
    <sethtmlpagefooter name="myfooter" value="on" /> 
mpdf-->'; 

一些的造型,我使用

body {font-family: sans-serif; 
    font-size: 10pt; 
} 
p { margin: 0pt; 
} 
td { vertical-align: top; } 
.items td { 
    border-left: 0.1mm solid #000000; 
    border-right: 0.1mm solid #000000; 
} 
table thead td { background-color: #d4ffaa; 
    border: 0.1mm solid #000000; 
} 
.items td.blanktotal { 
    background-color: #FFFFFF; 
    border: 0mm none #000000; 
    border-top: 0.1mm solid #000000; 
    border-right: 0.0mm solid #000000; 
} 
.items td.totals { 
    text-align: right; 
    border-top: 0.1mm solid #000000; 
    border-right: 0.0mm solid #000000; 
    border-left: 0.0mm solid #000000; 
} 
.items td.totals1 { 
    text-align: right; 
    border-top: 0.0mm solid #000000; 
    border-right: 0.0mm solid #000000; 
    border-left: 0.0mm solid #000000; 
} 

結果看起來是這樣的:

enter image description here

出現此問題只有當行數量填充的頁面。如果它溢出,它不是主要問題,因爲表頭仍然存在於下一頁(不幸的是,不僅是最後一頁),而且其餘的行被進一步添加。

我該如何擺脫那些空行,在這種特殊情況下

謝謝!

!!編輯:增加了更多的信息,代碼和更好的案例圖像。對不起,第一次沒有這樣做!

!編輯#2:我剛上有超過1頁的<thead>,使其保持在接下來的幾頁自己的位置列的其他例子觀察。它總是發生。有沒有一種方法來禁用,以便其他<thead>旨意只是繼續從頁面頂部的下一個頁面上,而不從以前的頁面記住的位置?

回答

0

我終於找到了解決辦法。擺脫這些東西的最佳方法是用<th>替換<thead>標籤。 <thead>具有預定義的樣式,可以使表格標題在每個頁面上重複出現。 <th>會使頁頭在接下來的頁面上重複(幸運或不幸),但它會消除由<thead>的風格造成的空間

0

您需要設置單獨的字符串頁眉(頁腳),像這樣:

require_once __DIR__ . '/../vendor/autoload.php'; 

$stylesheet = ' 
.table-header{ 
    border: none; 
    background-color: yellow; 
    width: 100%; 
} 
.table-header td{ 
    border-right: 1px solid; 
} 
.table-body{ 
    border: none; 
    background-color: transparent; 
    width: 100%; 
} 
.table-body td{ 
    border-right: 1px solid; 
    border-bottom: 1px solid; 
} 
.table-footer{ 
    border: none; 
    background-color: transparent; 
    width: 100%; 
} 
.table-footer .td-number{ 
    text-align: right; 
} 
'; 

/* Sample data */ 
$html = '<table class="table-body">'; 
for ($i = 1; $i <= 100; $i++) { 
    $html.='<tr> 
    <td width="30.3%">Forbrug '.$i.'</td> 
    <td width="23.1%">Periode '.$i.'</td> 
    <td width="10.76%">'.$i.' MB</td> 
    <td width="9.28%">Val '.$i.'</td> 
    <td width="12.9%" align="right">I alt '.$i.'</td> 
    <td width="13.3%" align="right"><b>moms</b> '.$i.'</td> 
    </tr>'; 
} 
$html.= '</table>'; 

$header = '<table class="table-header"><tr> 
<td width="30.3%">Forbrug</td> 
<td width="23.1%">Periode</td> 
<td width="10.76%">Tid/MB</td> 
<td width="9.28%">Enheder</td> 
<td width="12.9%" align="right">I alt</td> 
<td width="13.3%" align="right">I alt+<b>moms</b></td> 
</tr></table>'; 

$footer = '<table class="table-footer"><tr> 
<td>Footer here</td> 
<td class="td-number"><b>Page N. {PAGENO}</b></td> 
</tr></table>'; 

$mpdf = new mPDF('c','A4','','',15,15,18,15,10,5); 
$mpdf->mirrorMargins = 1; 
/* Declare headers */ 
$mpdf->SetHTMLHeader($header); 
$mpdf->SetHTMLHeader($header,'E'); 
/* Declare footers */ 
$mpdf->SetHTMLFooter($footer); 
$mpdf->SetHTMLFooter($footer,'E'); 
$mpdf->WriteHTML($stylesheet,1); 
$mpdf->WriteHTML($html); 
$mpdf->Output(); 
+0

我添加了所有標題,如您向我展示的那樣,並將標題設置爲mpdf,但它不起作用。所以,這裏的問題是當表格的行填滿表格時(不超過)。它在第二頁上添加沒有行的標題。如果行數超過了頁面,那麼在第二個頁面上再次顯示頁眉時沒有問題,只要它填充了頁面... –

+0

那麼,如果你沒有顯示你的代碼,就不可能確定什麼是什麼真的發生了;) – ShutUpMagda

+0

我爲此道歉。我添加了一些更多的東西,並且更好地解釋了一些,以便您可以更好地瞭解該案例。不幸的是,我不能顯示所有內容,因爲這不是我個人的工作,但我試圖展示一切重要的事情,以便我可以解決問題。請告訴我,這與我現在添加的內容相關。謝謝! –

相關問題