5个最好的PHP开源PDF生成库

本文概述

  • 5. FPDF
  • 4. mPDF
  • 3. DOMPDF
  • 2. Snappy(wkhtmltopdf)
  • 1. TCPDF
PDF文件的自动创建是项目(无论是否商业)最重要的方面之一。生成的PDF可能不适合你或你的团队, 而是适合你苛刻的客户, 你需要提供一种满足所有期望和要求的解决方案。
在某些情况下, 不是因为客户需求过大, 而是因为你用于生成PDF的库, 你会发现自己受到限制, 并且很可能遇到问题, 无法为客户提供解决方案。
在本文中, 我们将展示5个最不重要的PDF生成库, 这些库将帮助你实现那些复杂和扩展的PDF。
该主题的不同之处在于它们的实现难易程度, 用例, 库用户, 功能和开发状态。
5. FPDF例子
FPDF是一个PHP类, 它允许使用纯PHP生成PDF文件, 也??就是说, 无需使用PDFlib库。 FPDF中的F表示免费:你可以将其用于任何用途, 并对其进行修改以适合你的需求。
FPDF还具有其他优点:高级功能, 其主要功能包括:
  • 选择度量单位, 页面格式和边距。
  • 页面页眉和页脚管理。
  • 自动分页符。
  • 自动换行和文本对齐。
  • 图像支持(JPEG, PNG和GIF)。
  • 颜色。
  • 链接。
  • TrueType, Type1和编码支持。
  • 页面压缩。
FPDF不需要扩展名(Zlib除外, 以启用压缩功能, 而GD则支持GIF)。最新版本至少需要PHP 5.1。
以下代码片段显示了使用FPDF生成的基本PDF:
< ?phprequire('fpdf/fpdf.php'); $pdf = new FPDF(); $pdf-> AddPage(); $pdf-> SetFont('Arial', 'B', 16); $pdf-> Cell(40, 10, 'Hello World!'); $pdf-> Output(); ?>

4. mPDFmPDF是一个PHP类, 可以从UTF-8编码的HTML生成PDF文件。它基于FPDF和HTML2FPDF, 具有许多增强功能。 mPDF由Ian Back编写, 并根据GNU GPL v2许可证发布。
在开始使用它之前, 我们请你阅读位于https://mpdf.github.io/的文档。
以下代码片段显示了使用mPDF安装作曲家后的基本PDF:
< ?phprequire_once __DIR__ . '/vendor/autoload.php'; $mpdf = new mPDF(); // Write some HTML code:$mpdf-> WriteHTML('< h1> Hello World< /h1> < br> < p> My first PDF with mPDF< /p> '); // Output a PDF file directly to the browser$mpdf-> Output(); ?>

3. DOMPDFGithub
Dompdf(大多数情况下)是用PHP编写的, 符合CSS 2.1的HTML布局和呈现引擎。它是样式驱动的渲染器:它将下载和读取外部样式表, 内联样式标签以及单个HTML元素的样式属性。它还支持大多数演示HTML属性。
特征
  • 处理大多数CSS 2.1和一些CSS3属性, 包括@ import, @ media和@page规则
  • 支持大多数演示HTML 4.0属性
  • 支持本地或通过http / ftp的外部样式表(通过fopen-wrappers)
  • 支持复杂的表格, 包括行和列跨度, 单独和折叠的边框模型, 单个单元格样式
  • 图像支持(gif, png(带有alpha通道的8、24和32位), bmp和jpeg)
  • 借助R&OS PDF类, 无需依赖外部PDF库
  • 内联PHP支持
  • 基本SVG支持
要求
  • PHP版本5.3.0或更高版本
  • DOM扩展
  • GD扩展
  • MBString扩展
  • PHP的字体库
  • php-svg-lib
推荐建议
  • OPcache(OPcache, XCache, APC等):提高性能
  • IMagick或GMagick扩展:提高图像处理性能
以下代码段显示了如何使用Dompdf生成简单的PDF并生成直接下载:
< ?phprequire_once 'dompdf/autoload.inc.php'; // reference the Dompdf namespaceuse Dompdf\Dompdf; // instantiate and use the dompdf class$dompdf = new Dompdf(); $dompdf-> loadHtml('< h1> DOMPDF Demo< /h1> < br> < p> Hello World !< /p> '); // (Optional) Setup the paper size and orientation$dompdf-> setPaper('A4', 'portrait'); // Render the HTML as PDF$dompdf-> render(); // Output the generated PDF to Browser$dompdf-> stream();

2. Snappy(wkhtmltopdf)Github Snappy库| Github wkhtmltopdf
Snappy是一个PHP5库, 允许从url或html页面生成缩略图, 快照或PDF。它使用了出色的基于Webkit的wkhtmltopdf和wkhtmltoimage, 可在OSX, Linux, Windows上使用。你必须下载wkhtmltopdf 0.12.x才能使用Snappy。
wkhtmltopdf和wkhtmltoimage是开源(LGPLv3)命令行工具, 可使用Qt WebKit渲染引擎将HTML渲染为PDF和各种图像格式。它们完全” 无头运行” , 不需要显示或显示服务。
你甚至可以下载wkhtmltopdf发行版作为作曲者依赖项, 并在你的项目中动态引用Binary。
以下代码段显示了带有Github主页的Windows中使用wkhtmltopdf的HTML基本PDF:
< ?phprequire __DIR__ . '/vendor/autoload.php'; use Knp\Snappy\Pdf; // For example, in windows use the wkhtmltopdf executable file$snappy = new Pdf('wkhtmltopdf.exe'); // Download the streamed PDFheader('Content-Type: application/pdf'); header('Content-Disposition: attachment; filename="file.pdf"'); echo $snappy-> getOutput('http://www.github.com');

1. TCPDFGithub |主页
TCPDF是一个PHP库, 用于轻松, 两行地生成PDF文档。当你创建PDF文件时, 它支持自定义和许多关键功能。
该库支持Unicode字体, 由Nicola Asuni在Github存储库中积极维护。
它的官方主页上有大量示例和易于测试的摘录。 TCPDF具有以下主要功能:
  • 基本功能不需要外部库。
  • 所有标准页面格式, 自定义页面格式, 自定义边距和度量单位。
  • UTF-8 Unicode和从右至左的语言。
  • TrueTypeUnicode, OpenTypeUnicode v1, TrueType, OpenType v1, Type1和CID-0字体。
  • 字体子集。
  • 发布一些XHTML + CSS代码, Javascript和Forms的方法。
  • 图像, 图形(几何图形)和转换方法。
  • 本地支持JPEG, PNG和SVG图像, GD支持的所有图像(GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM)以及ImagMagick支持的所有图像(http://www.imagemagick.org/脚本/formats.php)
  • 一维和二维条形码:CODE 39, ANSI MH10.8M-1983, USD-3、3之9, CODE 93, USS-93, 标准2之5, 交错2之5, CODE 128 A / B / C, 2和5位基于UPC的扩展名, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC(Royal Mail 4状态客户代码), CBC(客户条形码), KIX(文本索引-客户索引), 智能邮件条形码, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE两轨, Datamatrix, QR码, PDF417。
  • JPEG和PNG ICC配置文件, 灰度, RGB, CMYK, 专色和透明胶片。
  • 自动页面页眉和页脚管理。
  • 高达256位的文件加密和数字签名认证。
  • 到UNDO命令的事务。
  • PDF批注, 包括链接, 文本和文件附件。
  • 文本渲染模式(填充, 描边和剪切)。
  • 多列模式。
  • 不写页面区域。
  • 书签, 命名的目的地和目录。
  • 文字连字。
  • 文字拉伸和间距(跟踪)。
  • 自动分页符, 换行符和文本对齐方式, 包括对齐方式。
  • 自动页面编号和页面组。
  • 移动和删除页面。
  • 页面压缩(需要php-zlib扩展名)。
  • XOBject模板。
  • 图层和对象可见性。
  • PDF / A-1b支持。
以下示例如何使用TCPDF将HTML呈现为PDF:
< ?php // Include the main TCPDF library (search for installation path).require_once('tcpdf_include.php'); // create new PDF document$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); // set document information$pdf-> SetCreator(PDF_CREATOR); $pdf-> SetAuthor('Our Code World'); $pdf-> SetTitle('Example Write Html'); // set default header data$pdf-> SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 006', PDF_HEADER_STRING); // set header and footer fonts$pdf-> setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); $pdf-> setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); // 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); // add a page$pdf-> AddPage(); $html = '< h4> PDF Example< /h4> < br> < p> Welcome to the Jungle< /p> '; $pdf-> writeHTML($html, true, false, true, false, ''); // add a page$pdf-> AddPage(); $html = '< h1> Hey< /h1> '; // output the HTML content$pdf-> writeHTML($html, true, false, true, false, ''); // reset pointer to the last page$pdf-> lastPage(); //Close and output PDF document$pdf-> Output('example_006.pdf', 'I');

首先是TCPDF, 为什么?从理论上讲, 第一个位置应该是wkhtmltopdf, 因为它使用webkit来呈现HTML, 并且可能更有助于将其呈现为canvas, SVG等。但是, 你需要知道并非每个开发人员都能够包含二进制文件(应用程序或TCPDF成为大多数开发人员的第一选择, 或者享受其在服务器上执行任何操作所需的特权。
TCPDF在此顶部居于首位, 因为它是最易于使用的PHP库来创建PDF, 但是, 由于它不需要可执行文件, 因此它最完整和扩展, 因为一切都可与Plain PHP一起使用。它涵盖了所有需要PDF生成功能的项目的基本要求。
【5个最好的PHP开源PDF生成库】如果你知道另一个很棒的PHP库可以生成PDF, 请在下面的注释框中与社区共享, 祝你玩得开心!

    推荐阅读