本文概述
- 5. FPDF
- 4. mPDF
- 3. DOMPDF
- 2. Snappy(wkhtmltopdf)
- 1. TCPDF
在某些情况下, 不是因为客户需求过大, 而是因为你用于生成PDF的库, 你会发现自己受到限制, 并且很可能遇到问题, 无法为客户提供解决方案。
在本文中, 我们将展示5个最不重要的PDF生成库, 这些库将帮助你实现那些复杂和扩展的PDF。
该主题的不同之处在于它们的实现难易程度, 用例, 库用户, 功能和开发状态。
5. FPDF例子
FPDF是一个PHP类, 它允许使用纯PHP生成PDF文件, 也??就是说, 无需使用PDFlib库。 FPDF中的F表示免费:你可以将其用于任何用途, 并对其进行修改以适合你的需求。
FPDF还具有其他优点:高级功能, 其主要功能包括:
- 选择度量单位, 页面格式和边距。
- 页面页眉和页脚管理。
- 自动分页符。
- 自动换行和文本对齐。
- 图像支持(JPEG, PNG和GIF)。
- 颜色。
- 链接。
- TrueType, Type1和编码支持。
- 页面压缩。
以下代码片段显示了使用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扩展:提高图像处理性能
<
?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支持。
<
?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, 请在下面的注释框中与社区共享, 祝你玩得开心!
推荐阅读
- 9个最好的React应用程序的最佳优化技术
- App被杀死时的回调-React Native
- Android Mediarecorder setNextOutputFile IllegalStateException
- [Material appbar存在时,Android Studio布局预览不起作用
- 谁能建议如何在android Recycler View中按产品价格实现排序[关闭]
- 在表单提交中找不到错误类'AppModel'
- 错误的Android Studio预览行为
- 如何使用Android Studio解决抖动中的gradle错误()
- Ubuntu 19.10上的React Native Android模拟器设置