2013-08-05 193 views
2

要從html頁面生成pdf我已經嘗試過很多pdf庫,如FPDF,HTML2FPDF,CEZPDF,DOMPDF和MPDF以HTML格式轉換爲PDF格式的PDF轉換器

但是,在每個pdf庫中,我發現一些問題不會產生所需的頁面佈局。

例如在MPDF中,我發現分頁符,但它是一個很好的PDF轉換器的HTML。

那麼請提出我應該使用哪個庫來生成pdf?我不在乎它是否需要購買。

在此先感謝。

回答

4

我不知道爲什麼你還沒有嘗試TCPDF這是目前最穩定的版本。 Here是你正在尋找的乾淨的例子。

<?php 

require_once('tcpdf_include.php'); 
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 

$pdf->SetCreator(PDF_CREATOR); 
$pdf->SetAuthor('Nicola Asuni'); 
$pdf->SetTitle('TCPDF Example 049'); 
$pdf->SetSubject('TCPDF Tutorial'); 
$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); 

$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 049', PDF_HEADER_STRING); 

]$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); 
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); 

$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); 

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

$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); 

$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); 

if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { 
    require_once(dirname(__FILE__).'/lang/eng.php'); 
    $pdf->setLanguageArray($l); 
} 
$pdf->SetFont('helvetica', '', 10); 

$pdf->AddPage(); 


$html = '<h1>Test TCPDF Methods in HTML</h1> 
<h2 style="color:red;">IMPORTANT:</h2> 
<span style="color:red;">If you are using user-generated content, the tcpdf tag can be unsafe.<br /> 
You can disable this tag by setting to false the <b>K_TCPDF_CALLS_IN_HTML</b> constant on TCPDF configuration file.</span> 
<h2>write1DBarcode method in HTML</h2>'; 

$params = TCPDF_STATIC::serializeTCPDFtagParameters(array('CODE 39', 'C39', '', '', 80, 30, 0.4, array('position'=>'S', 'border'=>true, 'padding'=>4, 'fgcolor'=>array(0,0,0), 'bgcolor'=>array(255,255,255), 'text'=>true, 'font'=>'helvetica', 'fontsize'=>8, 'stretchtext'=>4), 'N')); 
$html .= '<tcpdf method="write1DBarcode" params="'.$params.'" />'; 

$params = TCPDF_STATIC::serializeTCPDFtagParameters(array('CODE 128', 'C128', '', '', 80, 30, 0.4, array('position'=>'S', 'border'=>true, 'padding'=>4, 'fgcolor'=>array(0,0,0), 'bgcolor'=>array(255,255,255), 'text'=>true, 'font'=>'helvetica', 'fontsize'=>8, 'stretchtext'=>4), 'N')); 
$html .= '<tcpdf method="write1DBarcode" params="'.$params.'" />'; 

$html .= '<tcpdf method="AddPage" /><h2>Graphic Functions</h2>'; 

$params = TCPDF_STATIC::serializeTCPDFtagParameters(array(0)); 
$html .= '<tcpdf method="SetDrawColor" params="'.$params.'" />'; 

$params = TCPDF_STATIC::serializeTCPDFtagParameters(array(50, 50, 40, 10, 'DF', array(), array(0,128,255))); 
$html .= '<tcpdf method="Rect" params="'.$params.'" />'; 
$pdf->writeHTML($html, true, 0, true, 0); 

$pdf->lastPage(); 
$pdf->Output('example_049.pdf', 'I'); 

?> 
1

我已經使用了TCPDF和DOMPDF。

FOR:

  • TCPDF:
    • 您可以設計頁面佈局很容易
  • DOMPDF:
    • 幾乎所有的CSS功能的支持,如果你設計頁面在HTML,CSS,印刷的PDF將是相同的。這是互聯網上最簡單的圖書館。
    • 你也可以使用PHP腳本,DOMPDF將運行在pdf代。

反對:

  • TCPDF:
    • 你寫了很多...
    • 很難使用CSS
  • DOMPDF:
    • 在大型表上,它有巨大的內存消耗,並可能崩潰。
    • 棘手的版面設計(頁眉和頁腳)