PHP中的HTML到PDF转换器

时间:2013-08-05 10:31:59

标签: html pdf converter

要从html页面生成pdf,我尝试过很多pdf库,如 FPDF,HTML2FPDF,CEZPDF,DOMPDF和MPDF

但在每个pdf库中,我发现了一些不会产生页面所需布局的问题。

例如在MPDF中,我发现了分页符,但它是一个很好的html到pdf转换器。

请建议我使用哪个库来生成pdf?我不在乎是否需要购买。

提前致谢。

5 个答案:

答案 0 :(得分: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 :(得分:2)

您可以试试http://www.tcpdf.org/。网站提供了一些很好的示例,您也可以将页面布局设计为自己的样式

答案 2 :(得分:1)

我使用过TCPDF和DOMPDF。

作为

  • TCPDF:
    • 您可以非常轻松地设计页面布局
  • DOMPDF:
    • 几乎每个css功能都支持,如果你用html,css设计页面,打印的pdf会是一样的。这是互联网上最简单的图书馆。
    • 你也可以使用php脚本,DOMPDF将在pdf生成上运行它。

<强>反对:

  • TCPDF:
    • 你必须写很多......
    • 很难使用css
  • DOMPDF:
    • 在大型表上,它占用大量内存,可能会崩溃。
    • 棘手的页面布局设计(页眉和页脚)

答案 3 :(得分:0)

尝试HTM2PDF - 它支持分页,单页面布局和许多其他选项。

HTML to PDF API适用于所有编程语言以及PHP HTML to PDF SDK

答案 4 :(得分:-1)

使用此工具。这会更好

http://sourceforge.net/projects/html2fpdf/