- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我根本不擅长PDF。我在下面添加了两部分,称为“发票注释和订单注释”。我遇到的问题是我无法将这两个部分放在一个好的单元格中。当我尝试诸如 $pdf->Cell
等时,我只是看到可怕的白屏。由于某种原因,似乎只有 drawText
可以渲染文本。此外,评论也延伸到了 PDF 页面之外。我尝试输入换行符但没有成功。我猜是因为注释是数组。任何帮助都会很棒。
class Inchoo_Invoice_Model_Order_Pdf_Invoice extends Mage_Sales_Model_Order_Pdf_Invoice
{
protected function insertImage($image, $x1, $y1, $x2, $y2, $width, $height, &$page)
{
if (!is_null($image)) {
try{
$width = (int) $width;
$height = (int) $height;
//Get product image and resize it
$imagePath = Mage::helper('catalog/image')->init($image, 'image')
->keepAspectRatio(true)
->keepFrame(false)
->resize($width, $height)
->__toString();
$imageLocation = substr($imagePath,strlen(Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB)));
$image = Zend_Pdf_Image::imageWithPath($imageLocation);
//Draw image to PDF
$page->drawImage($image, $x1, $y1, $x2, $y2);
}
catch (Exception $e) {
return false;
}
}
}
public function getPdf($invoices = array())
{
$width = 1000;
$height = 1000;
$this->_beforeGetPdf();
$this->_initRenderer('invoice');
$pdf = new Zend_Pdf();
$this->_setPdf($pdf);
$style = new Zend_Pdf_Style();
$this->_setFontBold($style, 10);
foreach ($invoices as $invoice) {
if ($invoice->getStoreId()) {
Mage::app()->getLocale()->emulate($invoice->getStoreId());
}
$page = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);
$pdf->pages[] = $page;
$order = $invoice->getOrder();
/* Add image */
$this->insertLogo($page, $invoice->getStore());
/* Add address */
$this->insertAddress($page, $invoice->getStore());
/* Add head */
$page->drawText(Mage::helper('sales')->__('Invoice # ') . $invoice->getIncrementId(), 487, 780, 'UTF-8');
$this->insertOrder($page, $order, Mage::getStoreConfigFlag(self::XML_PATH_SALES_PDF_INVOICE_PUT_ORDER_ID, $order->getStoreId()));
$page->setFillColor(new Zend_Pdf_Color_GrayScale(1));
$this->_setFontRegular($page);
/* Add table */
$page->setFillColor(new Zend_Pdf_Color_RGB(0.93, 0.92, 0.92));
$page->setLineColor(new Zend_Pdf_Color_GrayScale(0.5));
$page->setLineWidth(0.5);
$page->drawRectangle(25, $this->y, 570, $this->y -15);
$this->y -=10;
/* Add table head */
$page->setFillColor(new Zend_Pdf_Color_RGB(0.4, 0.4, 0.4));
$page->drawText(Mage::helper('sales')->__('Products'), 35, $this->y, 'UTF-8');
//Added for product image
$page->drawText(Mage::helper('sales')->__('Product Image'), 279, $this->y, 'UTF-8');
$page->drawText(Mage::helper('sales')->__('SKU'), 125, $this->y, 'UTF-8');
$page->drawText(Mage::helper('sales')->__('Price'), 380, $this->y, 'UTF-8');
$page->drawText(Mage::helper('sales')->__('Qty'), 430, $this->y, 'UTF-8');
$page->drawText(Mage::helper('sales')->__('Tax'), 480, $this->y, 'UTF-8');
$page->drawText(Mage::helper('sales')->__('Subtotal'), 535, $this->y, 'UTF-8');
$this->y -=15;
$page->setFillColor(new Zend_Pdf_Color_GrayScale(0));
/* Add body */
foreach ($invoice->getAllItems() as $item){
if ($item->getOrderItem()->getParentItem()) {
continue;
}
if ($this->y < 15) {
$page = $this->newPage(array('table_header' => true));
}
/* Draw item */
$page = $this->_drawItem($item, $page, $order);
/* Draw product image */
$productId = $item->getOrderItem()->getProductId();
$image = Mage::getModel('catalog/product')->load($productId);
$this->insertImage($image, 345, (int)($this->y + 0), 275, (int)($this->y+65), $width, $height, $page);
}
/* Add totals */
$page = $this->insertTotals($page, $invoice);
/*************************** This Is The Invoice Comments ***********************************/
$_tempY = $this->y;
$this->y += 10;
$commentsCollection = $invoice->getCommentsCollection(true);
$internalcomments = "Internal Invoice Comments";
$page->drawText($internalcomments, 35, $this->y, 'UTF-8');
foreach($commentsCollection as $comm)
{
$page->drawText($comm->getData('comment'), 235, $this->y, 'UTF-8');
$this->y -= 10;
}
/*************************** End Invoice Comments ***********************************/
if ($invoice->getStoreId()) {
Mage::app()->getLocale()->revert();
}
}
/************************* This Is The Order Comments *******************************/
$_tempY = $this->y;
$this->y -= 80;
$statusHistoryCollection = $order->getStatusHistoryCollection();
$customersection = "Order Customer Comments";
$page->drawText($customersection, 35, $this->y, 'UTF-8');
foreach ($statusHistoryCollection as $statushistory) {
$page->drawText($statushistory->getComment(), 35, $this->y, 'UTF-8');
$this->y -= 10;
}
$this->y = $_tempY;
/************************* End Order Comments *******************************/
$this->_afterGetPdf();
return $pdf;
}
}
最佳答案
我已经为您完成了发票注释部分,以便您能够将相同的技术应用于订单注释。我在我的沙箱上测试了它并且它有效。您可以将 $textChunk = wordwrap($comm->getData('comment'), 120, "\n");
行中的 120
值更改为最适合您发票的方式。我在内部发票注释
中添加了一个表格标题,但您可以根据需要将其删除。
/*************************** This Is The Invoice Comments ***********************************/
$this->_setFontRegular($page, 10);
// Begin table header
$page->setFillColor(new Zend_Pdf_Color_RGB(0.93, 0.92, 0.92));
$page->setLineColor(new Zend_Pdf_Color_GrayScale(0.5));
$page->setLineWidth(0.5);
$page->drawRectangle(25, $this->y, 570, $this->y -15);
$this->y -= 10;
$page->setFillColor(new Zend_Pdf_Color_RGB(0, 0, 0));
// end table header
$_tempY = $this->y;
$commentsCollection = $invoice->getCommentsCollection(true);
$internalcomments = "Internal Invoice Comments";
$page->drawText($internalcomments, 35, $this->y, 'UTF-8');
$this->y -= 15;
foreach($commentsCollection as $comm)
{
$textChunk = wordwrap($comm->getData('comment'), 120, "\n");
foreach(explode("\n", $textChunk) as $textLine){
if ($textLine!=='') {
$page->drawText(strip_tags(ltrim($textLine)), 35, $this->y, 'UTF-8');
$this->y -= 15;
}
}
}
/*************************** End Invoice Comments ***********************************/
附注Magento PDF例程中的部分换行改编自PHP + PDF Line Break 。谢谢@shaune!
关于Magento PDF 发票内容布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15028306/
我正在构建发票系统。我的客户想在不登录 PayPal 帐户的情况下发送 PayPal 发票。 我设法使 CreateInvoice() 和 CreateAndSendInvoice() 函数正常工作(
有人知道用 C# 或 VB.NET 编写的用于在小型打印机中打印票据的类吗?打印机:EPSON TM-U220PD 感谢您的帮助。 最佳答案 如果您的发票是可以包含在 Stream 中的内容(例如文件
我的客户有一个基于 ubercart 的商店,运行良好。由于一些内部问题,他需要为每张发票手动添加一个字段。我想知道是否或者更确切地说如何向显示在所有发票上的订单添加自定义字段。 最佳答案 这是一个老
我正在为特许经营的 CRM 设计关系数据库的第二次主要迭代(进行了大量重构),我需要有关用于存储的最佳数据库设计实践的帮助 工作发票和 发票行用强审计跟踪 对每张发票所做的任何更改。 当前模式 Inv
我在让这段代码正常工作时遇到了一些麻烦。我们的员工可以访问我们网站上的后端系统。这是输入字段等的设置方式: query("SELECT faktura_materialer.id as materia
我想在我的 iOS 应用程序中创建一个 PDF 发票(在 Objective-C 或 Swift 中)。 我的主要问题是发票可能有几页,这很难通过 Apple 的现有 API(CoreGraphics
我正在设计一个具有以下场景的电子商务网站: 客户可以购买商品并创建订单。 订单可能有未知费用,将在客户之后添加支付项目的总金额。也就是说,客户支付一定数量的第一。该订单增加了一些费用并改变了总额。客户
令人惊讶的是,在 successfull checkout session 之后无法自动生成发票与 Stripe 。在 Stripe 系统中,发票必须始终先于付款。 我不得不通过一堆获取 Paymen
我目前正在做一个小项目,我需要对以下场景进行建模: 场景 客户打来电话,他想要一辆新车的报价。 销售代表。注册客户信息。 销售代表。在系统中创建报价,并将项目添加到报价(汽车)。 销售代表。通过电子邮
为了在用户选择“立即购买”时节省交易成本,系统会在新选项卡中打开 HTML 发票,其中包含他们的订单和我们的银行详细信息,供他们进行手动电子转帐。有什么我应该注意的安全问题吗?黑客可以将自己的银行详细
我有一个下表: Invoice| Colour | Type In_001 | Red | D In_001 | Red | D In_001 | Yellow | E In_002
我正在尝试将包含发票和表格的图像旋转到正确的方向。我试图找到角度,然后旋转图像。只有少数图像被正确旋转。下面是我试图以正确方向旋转的代码和图像,第一个图像旋转正确,其他图像旋转不正确 import n
基本要求是以以下格式创建订单号: (M)M-SSS 其中 MM 代表当前月份,SSSS 代表当月的订单顺序。例如,1-002 代表一月份提交的第二个订单。 使用 TRIGGER 我希望自动递增和插入透
使用 PayPal API,我想在买家在网络应用程序中完成购买后立即通过电子邮件发送一张标记为已付款的发票。 这可能吗? 如果不使用 API,您将无法为已付 发票手动发送电子邮件通知。是吗? 最佳答案
如果我需要在系统之间发送和接收业务文档(发票、采购订单、汇款通知书等),您会推荐什么标准以获得最佳互操作性?为什么?它可以是 XML 或其他形式。 最佳答案 UBL (通用商业语言)是这方面的最新尝试
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是
我正在尝试创建手动 strip 发票,但不希望它从待处理的发票项目创建发票。例如,我有 3 个待处理的发票项目,我不想包含在这张手动发票中。 待定订单项: 第 1 项 第 2 项 新发票: 第 3 项
我正在从我的 API 取回发票,并且我注意到如果有 2 个整月的计费周期,一切都很好 - 但我总是得到一个开始/结束日期和创建日期相同的发票。 所以,我最终显示它并且它没有意义......即。 假设用
是否有任何方法 (API) 可以从未在 Azure 中运行的应用程序访问我的 Azure 发票信息? 我想获取此信息并每月自动将其添加到我的 ERP 中。 谢谢再见 最佳答案 正如 Andrew 所提
我想将一些发票导出到 Microsoft Excel/XML。标准格式效果不太好,因为我需要一些额外的列。 我的问题是:文件在哪里生成的?我在哪里设置这些特殊列? 提前致谢 最佳答案 当Invoice
我是一名优秀的程序员,十分优秀!