本文演示了如何使用zend_pdf动态生成PDF发票。 关键好处包括创建新的PDF或修改现有的PDF,非常适合具有静态(公司信息,徽标)和动态(客户,交易详细信息)数据的发票。 zend_pdf处理字体,颜色和内容添加,尽管文本定位可能需要进行一些调整。 生成的发票可以保存到文件或直接发送到浏览器以供下载。 除了基本的PDF创建之外,Zend_pdf还提供图像包含,字体样式,链接插入和错误处理之类的功能。 但是,像表这样的复杂元素需要手动细胞放置计算。
>>入门:基于模板的方法
> 从头开始创建PDF是可能的,但是使用预设计的模板(例如,从Word或libreoffice中导出为PDF)更有效。 这种方法最大程度地减少了编码和发电时间。 该模板包含静态元素(公司详细信息,徽标等),而动态数据则以编程方式添加。 以下是一个示例模板(用自己的替换)。>
设置Zend Framework:>
如果您是新手Zend Framework,请从composer require zendframework/zendpdf
加载PDF模板:> zend_pdf使用加载现有的PDF。 结果对象通过数组(例如,
)提供对单个页面的访问Zend_Pdf::load("/path/to/invoice-template.pdf");
>字体和颜色:pages
$page = $invoice->pages[0];
自定义truetype字体。 使用。设置字体和大小 使用
>对象(灰度,RGB,CMYK或HTML符号)指定颜色。 将填充颜色设置为Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_TIMES_BOLD);
。Zend_Pdf_Font::fontWithPath("/path/to/myfont.ttf");
$page->setFont($font, 12);
Zend_Pdf_Color_*
$page->setFillColor($color);
添加文本。坐标($ x,$ y)为点(72分= 1英寸),左下角。 精确定位可能需要实验。
>示例数据(用数据库检索替换):
>$customerName = "Angelina Jolie"; $invoiceId = "DF-00025786423"; $items = array( array("Golden Globe Polish", 1, 25.50, 25.50), array("Trophy Shelf", 2, 180.00, 360.00), array("DIY Tattoo Kit", 1, 149.99, 149.99) ); $subtotal = 535.49; $discount = 10; $amountDue = 481.94;
>文本放置示例(根据需要调整坐标):
>$page->drawText($customerName, 110, 641); $page->drawText($invoiceId, 420, 642); // ... other text additions ...
>渲染发票:
保存PDF或将其直接发送到浏览器以供下载:$invoice->save($pathToFile);
header("Content-Type: application/x-pdf"); header("Content-Disposition: attachment; filename=invoice-". date("Y-m-d-H-i") . ".pdf"); echo $invoice->render();
结论:
以上是phpmaster |使用Zend-PDF生成发票的详细内容。更多信息请关注PHP中文网其他相关文章!