PHP创建PDF发票
Posted
技术标签:
【中文标题】PHP创建PDF发票【英文标题】:PHP create PDF invoice 【发布时间】:2011-08-20 08:36:33 【问题描述】:您好,有人知道我如何通过 php 创建格式精美的 PDF 发票吗?
理想情况下,我正在寻找带有标题的东西,然后是带有某种表格的产品的逐项列表。在快速谷歌之后,我会对生成 PDF 感到满意,但尝试很好地设置它的样式完全是另一回事。
谢谢
【问题讨论】:
你遇到过 FPDF 吗?我之前研究过……看起来工作量很大,但很有希望 是的,现在看看 - 非常好的教程:web-development-blog.com/archives/… 我建议查看actualreports.com,它们是一个API 和一个基于浏览器的文档编辑器,用于创建不同的模板。请注意,他们收取服务费。 专为发票设计的 PDF 生成器 - packagist.org/packages/quickshiftin/php-pdf-invoice 【参考方案1】:我建议创建一个 html / css 表示您想要 PDF 的内容并使用它来生成 PDF。有几十个应用程序来处理转换,这里有一个很好的线程有很多答案:Convert HTML + CSS to PDF with PHP?
【讨论】:
感谢您的回答 +1。这听起来确实是一个很好的解决方案,它将帮助将来考虑这个问题的人,但是对于我的情况,我需要使用 cron 每月生成一些发票。这就是为什么我没有选择你的答案正确的原因。 我之前做过一些PDF生成,真的很痛苦。使用 HTML 进行设计要容易得多,您已经知道并可以像 Timothy 所说的那样进行转换。我能想到手动生成它们的唯一原因是如果您需要控制分页符。【参考方案2】:为此,我使用 TCPDF(请参阅 http://www.tcpdf.org/):它非常强大,而且安装起来不会太痛苦。我会说,根据您的数据源,您可能会遇到一些问题。就我而言,我的数据来自我的会计系统的 SOAP 接口,并为我的应用程序使用 CodeIgniter,我可以这样做:
$address = $extraclient->get_company_address();
// generate the PDF invoice
$this->load->library('pdfinvoice');
// set document information
$this->pdfinvoice->SetSubject("Invoice " . $data_invoice['code_invoice']);
// add a page
$this->pdfinvoice->AddPage();
$this->pdfinvoice->StartPageOffset();
// write the client's details out
$width = $this->pdfinvoice->GetPageWidth()/2;
$margins = $this->pdfinvoice->getMargins();
$this->pdfinvoice->SetFont('times', 'b', $this->pdfinvoice->bigFont );
$this->_row($width, array("From:", "To:"));
$this->pdfinvoice->SetFont('times', 'i', $this->pdfinvoice->smallFont );
$this->_row($width, array("MY NAME", $customer['name_contact']));
$this->_row($width, array($address['phone'], $customer['name_customer']));
$this->_row($width, array($address['street'], $customer['address1_street']));
$this->_row($width, array($address['city']. ", ".$address['state']." ".$address['zipcode'],
$customer['address1_city']. ", ".$customer['address1_state']." ".$customer['address1_zip
坦率地说,完整的代码太长了,无法在此处插入,但您应该明白这一点,并且您会获得相当精确的布局控制。
【讨论】:
如果你已经在使用phpExcel,它有内置的库(所以你可以直接调用类)【参考方案3】:您可能想查看 html2Pdf。它是一个基于 FPDF 的 php 类,它允许您从 HTML 创建 PDF 文件。因此,只需使用 html 格式化您的文本,然后创建其 pdf。它非常灵活,可以提供更好的控制。
SourceForge Link
【讨论】:
【参考方案4】:查看 composer 的 php-pdf-invoice
库。该库已经为生成发票而设计,因此可以轻松快速地集成!
composer require quickshiftin/php-pdf-invoice
您可以生成如下所示的 PDF 文件
README 中有一个使用示例。本质上,您实现了两个接口,一个用于订单,另一个用于订单项目。您也可以根据自己的喜好配置字体和颜色。
【讨论】:
【参考方案5】:PDF 生成往往很棘手。只要发票相对简单,我建议创建一个模板图像文件并使用imagettftext
在其上打印字符串(或任何其他库)。
图像文件到PDF的转换imagemagick工具套件可以使用(只要它在服务器上可用):
exec('convert -units \'PixelsPerInch\' -density 150 '.$filename.'.png '.$filename.'.pdf');
对我来说,整个方法都很顺利。
【讨论】:
【参考方案6】:尽管您可以通过编程方式生成 pdf 文档,但我们发现最好只生成 PDF 文档的 HTML 页面并使用某种工具/服务将 HTML 转换为 PDF。
如果您正在寻找可以托管的应用,您可以查看以下内容:
wkhtmltopdf - 使用 webkit 将 html 渲染为 pdf。有一些注意事项可以正常工作。 PhantomJS - 已停产,我不建议使用它。 Headless Chrome - 最重要的是,它本身并不是一个解决方案。根据您的编程语言环境,您需要一个客户端模块。如果您不想自己处理该实用程序,有很多免费/付费的在线服务,其中一些列在下面:
PDF Layer(已测试 - 良好) Restpack(已测试 - 良好) DocRaptor HTMLPDFAPI HTML to PDF Rocket【讨论】:
以上是关于PHP创建PDF发票的主要内容,如果未能解决你的问题,请参考以下文章