Muốn thêm text vào phần header hay footer trong file pdf cua invoice theo hình dưới:
Tạo module tên pdf
app/code/local/Pdf/Sales/Model/Order/Pdf/Abstract.php
<?php
abstract class Pdf_Sales_Model_Order_Pdf_Abstract extends Mage_Sales_Model_Order_Pdf_Abstract
{
public function insertTitle(Zend_Pdf_Page $page, $text)
{
$this->_setFontBold($page, 17);
$docHeader = $this->getDocHeaderCoordinates();
$page->drawText($text, 200, $docHeader[1]+13, 'UTF-8');
}
}
app/code/local/Pdf/Sales/Model/Order/Pdf/Invoice.php
<?php
class Pdf_Sales_Model_Order_Pdf_Invoice extends Pdf_Sales_Model_Order_Pdf_Abstract
{
/**
* Draw header for item table
*
* @param Zend_Pdf_Page $page
* @return void
*/
protected function _drawHeader(Zend_Pdf_Page $page)
{
/* Add table head */
$this->_setFontRegular($page, 11);
$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));
//columns headers
$lines[0][] = array(
'text' => Mage::helper('sales')->__('Products'),
'feed' => 35
);
$lines[0][] = array(
'text' => Mage::helper('sales')->__('SKU'),
'feed' => 290,
'align' => 'right'
);
$lines[0][] = array(
'text' => Mage::helper('sales')->__('Qty'),
'feed' => 435,
'align' => 'right'
);
$lines[0][] = array(
'text' => Mage::helper('sales')->__('Price'),
'feed' => 360,
'align' => 'right'
);
$lines[0][] = array(
'text' => Mage::helper('sales')->__('Tax'),
'feed' => 495,
'align' => 'right'
);
$lines[0][] = array(
'text' => Mage::helper('sales')->__('Subtotal'),
'feed' => 565,
'align' => 'right'
);
$lineBlock = array(
'lines' => $lines,
'height' => 5
);
$this->drawLineBlocks($page, array($lineBlock), array('table_header' => true));
$page->setFillColor(new Zend_Pdf_Color_GrayScale(0));
$this->y -= 20;
}
/**
* Return PDF document
*
* @param array $invoices
* @return Zend_Pdf
*/
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());
$page->setFillColor(new Zend_Pdf_Color_Html('#ffffff'));
$page->setLineColor(new Zend_Pdf_Color_Html('#ffffff'));
$page->setLineWidth(0.5);
$page->drawRectangle(25, $this->y, 570, $this->y-145);
$this->y -= 35;
/* Add head */
$this->insertOrder(
$page,
$order,
Mage::getStoreConfigFlag(self::XML_PATH_SALES_PDF_INVOICE_PUT_ORDER_ID, $order->getStoreId())
);
/* Add Title */
$this->insertTitle($page,Mage::helper('sales')->__('INVOICE TO BUY'));
/* 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->_afterGetPdf();
return $pdf;
}
/**
* Create new page and assign to PDF object
*
* @param array $settings
* @return Zend_Pdf_Page
*/
public function newPage(array $settings = array())
{
/* Add new table head */
$page = $this->_getPdf()->newPage(Zend_Pdf_Page::SIZE_A4);
$this->_getPdf()->pages[] = $page;
$this->y = 800;
if (!empty($settings['table_header'])) {
$this->_drawHeader($page);
// $this->_setFontRegular($page);
// $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.4, 0.4, 0.4));
// $page->drawText(Mage::helper('sales')->__('Product'), 35, $this->y, 'UTF-8');
// $page->drawText(Mage::helper('sales')->__('SKU'), 255, $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');
//
// $page->setFillColor(new Zend_Pdf_Color_GrayScale(0));
// $this->y -=20;
}
//This is the textline for the footer next page
$this->_setFontBold($page, $size = 8);
$page->drawText(Mage::helper('sales')->__('Thank you buy at sieuthithucpham.com') , 80, 30, 'UTF-8');
return $page;
}
}
app/code/local/Pdf/Sales/etc/config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Pdf_Sales>
<version>1.0</version>
</Pdf_Sales>
</modules>
<!-- following tells magento to override core models-->
<global>
<models>
<sales>
<rewrite>
<order_pdf_abstract>Pdf_Sales_Model_Order_Pdf_Abstract</order_pdf_abstract>
<order_pdf_invoice>Pdf_Sales_Model_Order_Pdf_Invoice</order_pdf_invoice> <order_pdf_creditmemo>Pdf_Sales_Model_Order_Pdf_Creditmemo</order_pdf_creditmemo>
</rewrite>
</sales>
</models>
</global>
</config>
app/etc/modules/Pdf_Sales.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Pdf_Sales>
<active>true</active>
<codePool>local</codePool>
</Pdf_Sales>
</modules>
</config>