Magento:在发票 pdf 底部添加自定义文本
Magento: Add custom text at the bottom of invoice pdf
我是 Magento 的新手。
我想在客户发票的底部添加一些"term & condition"。
我知道这个问题已经在门户上发布了,但是我还没有找到任何解决方案。
谁能告诉我该怎么做。
打开文件app/code/core/Mage/Sales/Model/Order/Pdf/Invoice.php
并在文件末尾添加以下函数
public function insertConditions($page)
{
$page->drawLine(25, $this->y, 570, $this->y);
$this->y -= 25;
$page->drawText(Mage::helper('sales')->__('Your custom text here!'), 35, $this->y, 'UTF-8');
}
现在,您需要在 getPdf()
函数中调用此 insertConditions()
函数,如下所示:
public function getPdf($invoices = array())
{
$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());
Mage::app()->setCurrentStore($invoice->getStoreId());
}
$page = $this->newPage();
$order = $invoice->getOrder();
/* Add image */
$this->insertLogo($page, $invoice->getStore());
/* Add address */
$this->insertAddress($page, $invoice->getStore());
/* Add head */
$this->insertOrder(
$page,
$order,
Mage::getStoreConfigFlag(self::XML_PATH_SALES_PDF_INVOICE_PUT_ORDER_ID, $order->getStoreId())
);
/* Add document text and number */
$this->insertDocumentNumber(
$page,
Mage::helper('sales')->__('Invoice # ') . $invoice->getIncrementId()
);
/* Add table */
$this->_drawHeader($page);
/* Add body */
foreach ($invoice->getAllItems() as $item){
if ($item->getOrderItem()->getParentItem()) {
continue;
}
/* Draw item */
$this->_drawItem($item, $page, $order);
$page = end($pdf->pages);
}
/* Add totals */
$this->insertTotals($page, $invoice);
if ($invoice->getStoreId()) {
Mage::app()->getLocale()->revert();
}
}
$this->insertConditions($page); // the custom text is added here
$this->_afterGetPdf();
return $pdf;
}
PS. 我建议覆盖核心文件而不是直接更改它们。
我是 Magento 的新手。
我想在客户发票的底部添加一些"term & condition"。
我知道这个问题已经在门户上发布了,但是我还没有找到任何解决方案。
谁能告诉我该怎么做。
打开文件app/code/core/Mage/Sales/Model/Order/Pdf/Invoice.php
并在文件末尾添加以下函数
public function insertConditions($page)
{
$page->drawLine(25, $this->y, 570, $this->y);
$this->y -= 25;
$page->drawText(Mage::helper('sales')->__('Your custom text here!'), 35, $this->y, 'UTF-8');
}
现在,您需要在 getPdf()
函数中调用此 insertConditions()
函数,如下所示:
public function getPdf($invoices = array())
{
$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());
Mage::app()->setCurrentStore($invoice->getStoreId());
}
$page = $this->newPage();
$order = $invoice->getOrder();
/* Add image */
$this->insertLogo($page, $invoice->getStore());
/* Add address */
$this->insertAddress($page, $invoice->getStore());
/* Add head */
$this->insertOrder(
$page,
$order,
Mage::getStoreConfigFlag(self::XML_PATH_SALES_PDF_INVOICE_PUT_ORDER_ID, $order->getStoreId())
);
/* Add document text and number */
$this->insertDocumentNumber(
$page,
Mage::helper('sales')->__('Invoice # ') . $invoice->getIncrementId()
);
/* Add table */
$this->_drawHeader($page);
/* Add body */
foreach ($invoice->getAllItems() as $item){
if ($item->getOrderItem()->getParentItem()) {
continue;
}
/* Draw item */
$this->_drawItem($item, $page, $order);
$page = end($pdf->pages);
}
/* Add totals */
$this->insertTotals($page, $invoice);
if ($invoice->getStoreId()) {
Mage::app()->getLocale()->revert();
}
}
$this->insertConditions($page); // the custom text is added here
$this->_afterGetPdf();
return $pdf;
}
PS. 我建议覆盖核心文件而不是直接更改它们。