您知道我如何通过PHP创建格式良好的PDF发票?
理想情况下,我正在寻找带有标题的东西,然后是带有某种表格的产品的逐项列表。在快速推出谷歌之后,我会对生成PDF感到满意,但尝试将其设计得很好,这将是另一回事。
由于
答案 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。它非常灵活,可以提供更好的控制。
答案 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文件
README上有一个用法示例。基本上,您实现了两个接口,一个用于订单,另一个用于订单项。您也可以根据自己的喜好配置字体和颜色。
答案 5 :(得分:0)
即使您可以通过编程方式生成pdf文档,我们也发现最好只生成PDF文档的HTML页面并使用某种工具/服务将HTML转换为PDF。
如果您正在寻找可以托管的应用,则可以进行以下检查:
如果您不想自己处理该实用程序,则有很多免费的/付费的在线服务,下面列出了其中的一些: