【问题标题】:PHP create PDF invoicePHP创建PDF发票
【发布时间】:2011-08-20 08:36:33
【问题描述】:

您好,有人知道我如何通过 PHP 创建格式精美的 PDF 发票吗?

理想情况下,我正在寻找带有标题的东西,然后是带有某种表格的产品的逐项列表。在快速谷歌之后,我会对生成 PDF 感到满意,但尝试很好地设置它的样式完全是另一回事。

谢谢

【问题讨论】:

标签: php pdf-generation


【解决方案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 - 最重要的是,它本身并不是一个解决方案。根据您的编程语言环境,您需要一个客户端模块。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-05
          相关资源
          最近更新 更多