PHP创建PDF发票

时间:2011-05-06 17:03:10

标签: php pdf-generation

您知道我如何通过PHP创建格式良好的PDF发票?

理想情况下,我正在寻找带有标题的东西,然后是带有某种表格的产品的逐项列表。在快速推出谷歌之后,我会对生成PDF感到满意,但尝试将其设计得很好,这将是另一回事。

由于

6 个答案:

答案 0 :(得分:25)

我建议您创建一个html / css表示您想要PDF的内容并使用它来生成PDF。有许多应用程序来处理转换,这里有一个很好的解决方案:Convert HTML + CSS to PDF with PHP?

答案 1 :(得分:16)

我使用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

完整的代码非常坦率地插入这里,但你应该明白这一点,并且你可以得到相当精确的布局控制。

答案 2 :(得分:1)

你可能想看一下html2Pdf。它是一个基于FPDF的php类,它允许您从HTML创建PDF文件。所以只需使用html格式化文本,然后创建其pdf。它非常灵活,可以提供更好的控制。

SourceForge Link

答案 3 :(得分:0)

PDF生成往往很棘手。只要发票相对简单,我建议创建模板图像文件并使用$ docker run -d -p 8080:8080 -p 28015:28015 -p 29015:29015 dockerfile/rethinkdb 在其上打印字符串(或任何其他库)。

对于图像文件到PDF转换,可以使用 imagemagick 工具套件(只要它在服务器上可用):

imagettftext

对我来说,整个方法运作顺利。

答案 4 :(得分:0)

从composer中查看php-pdf-invoice库。该库已经设计用于生成发票,因此可以轻松快速地进行集成!

composer require quickshiftin/php-pdf-invoice

您可以生成如下所示的PDF文件

Here's a sample invoice

README上有一个用法示例。基本上,您实现了两个接口,一个用于订单,另一个用于订单项。您也可以根据自己的喜好配置字体和颜色。

答案 5 :(得分:0)

即使您可以通过编程方式生成pdf文档,我们也发现最好只生成PDF文档的HTML页面并使用某种工具/服务将HTML转换为PDF。

如果您正在寻找可以托管的应用,则可以进行以下检查:

  • wkhtmltopdf-使用Webkit将html渲染为pdf。某些警告可以正常工作。
  • PhantomJS-已终止,我不建议您使用它。
  • 无头Chrome -最好的解决方案,但它本身并不是解决方案。根据您的编程语言环境,您需要一个客户端模块。

如果您不想自己处理该实用程序,则有很多免费的/付费的在线服务,下面列出了其中的一些:

相关问题