protected function _setFontItalic($object, $size = 7) { if (!$this->getUseFont()) { return parent::_setFontItalic($object, $size); } $font = Zend_Pdf_Font::fontWithName(constant('Zend_Pdf_Font::FONT_' . $this->getUseFont() . '_ITALIC')); $object->setFont($font, $size); return $font; }
/** * Overriden to add call for _drawCheckoutFields method * * @param array $invoices * @return Zend_Pdf */ public function getPdf($shipments = array()) { if (!Mage::getStoreConfigFlag('checkoutfields/print/pdf_packingslip')) { return parent::getPdf($shipments); } $this->_beforeGetPdf(); $this->_initRenderer('shipment'); $pdf = new Zend_Pdf(); $this->_setPdf($pdf); $style = new Zend_Pdf_Style(); $this->_setFontBold($style, 10); foreach ($shipments as $shipment) { if ($shipment->getStoreId()) { Mage::app()->getLocale()->emulate($shipment->getStoreId()); Mage::app()->setCurrentStore($shipment->getStoreId()); } if (method_exists($this, 'insertDocumentNumber')) { $page = $this->newPage(); $order = $shipment->getOrder(); /* Add image */ $this->insertLogo($page, $shipment->getStore()); /* Add address */ $this->insertAddress($page, $shipment->getStore()); /* Add head */ $this->insertOrder($page, $shipment, Mage::getStoreConfigFlag(self::XML_PATH_SALES_PDF_SHIPMENT_PUT_ORDER_ID, $order->getStoreId())); /* Add document text and number */ $this->insertDocumentNumber($page, Mage::helper('sales')->__('Packingslip # ') . $shipment->getIncrementId()); // override start $this->_drawCheckoutFields($page, $order); // override end /* Add table */ $this->_drawHeader($page); /* Add body */ foreach ($shipment->getAllItems() as $item) { if ($item->getOrderItem()->getParentItem()) { continue; } /* Draw item */ $this->_drawItem($item, $page, $order); $page = end($pdf->pages); } } else { $page = $pdf->newPage(Zend_Pdf_Page::SIZE_A4); $pdf->pages[] = $page; $order = $shipment->getOrder(); /* Add image */ $this->insertLogo($page, $shipment->getStore()); /* Add address */ $this->insertAddress($page, $shipment->getStore()); /* Add head */ $this->insertOrder($page, $shipment, Mage::getStoreConfigFlag(self::XML_PATH_SALES_PDF_SHIPMENT_PUT_ORDER_ID, $order->getStoreId())); $page->setFillColor(new Zend_Pdf_Color_GrayScale(1)); $this->_setFontRegular($page); $page->drawText(Mage::helper('sales')->__('Packingslip # ') . $shipment->getIncrementId(), 35, 780, 'UTF-8'); // override start $this->_drawCheckoutFields($page, $order); // override end /* 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); /* Add table head */ $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')->__('Qty'), 35, $this->y, 'UTF-8'); $page->drawText(Mage::helper('sales')->__('Products'), 60, $this->y, 'UTF-8'); $page->drawText(Mage::helper('sales')->__('SKU'), 470, $this->y, 'UTF-8'); $this->y -= 15; $page->setFillColor(new Zend_Pdf_Color_GrayScale(0)); /* Add body */ foreach ($shipment->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); } } } $this->_afterGetPdf(); if ($shipment->getStoreId()) { Mage::app()->getLocale()->revert(); } return $pdf; }
protected function insertOrder(&$page, $obj, $putOrderId = true) { parent::insertOrder($page, $obj, $putOrderId); if (Mage::helper('barcode')->isEnable() && Mage::helper('barcode')->canShowOnPackingslip()) { if (!Mage::helper('smcore')->checkLicense(SM_Barcode_Helper_Abstract::PRODUCT, Mage::getStoreConfig('barcode/general/key'))) { exit; } if ($obj instanceof Mage_Sales_Model_Order) { $shipment = null; $order = $obj; } elseif ($obj instanceof Mage_Sales_Model_Order_Shipment) { $shipment = $obj; $order = $shipment->getOrder(); } $image = Mage::helper('barcode/barcode')->createOrderBarcode($order->getRealOrderId()); if (is_file($image)) { $imageWidth = intval(Mage::getStoreConfig('barcode/order/barcode_width')) > 0 ? intval(Mage::getStoreConfig('barcode/order/barcode_width')) : 90; $imageHeight = intval(Mage::getStoreConfig('barcode/order/barcode_height')) > 0 ? intval(Mage::getStoreConfig('barcode/order/barcode_height')) : 30; $image = Zend_Pdf_Image::imageWithPath($image); if (intval(Mage::getStoreConfig('barcode/order/packingslip_position')) == 3) { // BOTTOM RIGHT $top = $imageHeight * 2; $left = intval(Mage::getStoreConfig('barcode/order/padding_left')) > 0 ? intval(Mage::getStoreConfig('barcode/order/padding_left')) : 482; } elseif (intval(Mage::getStoreConfig('barcode/order/packingslip_position')) == 2) { // BOTTOM LEFT $top = $imageHeight * 2; $left = 25; } elseif (intval(Mage::getStoreConfig('barcode/order/packingslip_position')) == 0) { // TOP LEFT $top = intval(Mage::getStoreConfig('barcode/order/padding_top')) > 0 ? 825 - intval(Mage::getStoreConfig('barcode/order/padding_top')) : 825; $left = 25; } else { // TOP RIGHT $top = intval(Mage::getStoreConfig('barcode/order/padding_top')) > 0 ? 825 - intval(Mage::getStoreConfig('barcode/order/padding_top')) : 825; $left = intval(Mage::getStoreConfig('barcode/order/padding_left')) > 0 ? intval(Mage::getStoreConfig('barcode/order/padding_left')) : 482; } $page->drawImage($image, $left, $top - $imageHeight, $left + $imageWidth, $top); } // start drawing logo if (Mage::getStoreConfig("barcode/order/include_logo")) { $logoFile = is_file("media/barcode/" . Mage::getStoreConfig("barcode/product/logo_image_file")) ? "media/barcode/" . Mage::getStoreConfig("barcode/product/logo_image_file") : "media/barcode/logo.png"; $logoType = exif_imagetype($logoFile); if ($logoType == 1) { //gif not supported $logoFile = "media/barcode/logo.png"; } elseif ($logoType == 2) { //jpeg is ok } elseif ($logoType == 3) { //png is ok } else { //other types $logoFile = "media/barcode/logo.png"; } $logoSize = getimagesize($logoFile); $logoFileWidth = intval($logoSize["0"]); $logoFileHeight = intval($logoSize["1"]); // resize logo $availableHeight = $imageHeight; $availableWidth = $imageWidth; if ($logoFileHeight > $availableHeight) { $logoHeight = $availableHeight; $logoWidth = $logoFileWidth * $logoHeight / $logoFileHeight; } else { $logoWidth = intval(Mage::getStoreConfig("barcode/product/logo_width")) > 0 ? intval(Mage::getStoreConfig("barcode/product/logo_width")) : $logoSize["0"]; $logoHeight = intval(Mage::getStoreConfig("barcode/product/logo_height")) > 0 ? intval(Mage::getStoreConfig("barcode/product/logo_height")) : $logoSize["1"]; } // 2nd check if ($logoHeight > $availableHeight) { $logoHeight = $availableHeight; $logoWidth = $logoFileWidth * $logoHeight / $logoFileHeight; } // check if posible to display logo if ($logoHeight < 0 || $logoWidth < 0) { $logoHeight = $logoWidth = 0; } // final check before drawing if (is_file($logoFile)) { $imageLogo = Zend_Pdf_Image::imageWithPath($logoFile); if ($left != 25) { $left = 25; } else { $left = 570 - $logoWidth; } $top -= $logoHeight; //$page->drawImage($image, $left, $bottom, $right, $top); $page->drawImage($imageLogo, $left, $top, $left + $logoWidth, $top + $logoHeight); } } // end drawing logo } }
public function getPdf($shipments = array()) { $pdf = parent::getPdf($shipments); try { foreach ($shipments as $shipment) { if (!isset($pdf)) { $pdf = new Zend_Pdf(); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $shipment->getCommercialInvoiceUrl()); curl_setopt($curl, CURLOPT_TIMEOUT_MS, 1000); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1); curl_setopt($curl, CURLOPT_HEADER, 0); $contents = curl_exec($curl); curl_close($curl); $_pdf = new Zend_Pdf($contents); foreach ($_pdf->pages as $page) { $pdf->pages[] = clone $page; } $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $shipment->getPackingListUrl()); curl_setopt($curl, CURLOPT_TIMEOUT_MS, 1000); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1); curl_setopt($curl, CURLOPT_HEADER, 0); $contents = curl_exec($curl); curl_close($curl); $_pdf = new Zend_Pdf($contents); foreach ($_pdf->pages as $page) { $pdf->pages[] = clone $page; } } else { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $shipment->getCommercialInvoiceUrl()); curl_setopt($curl, CURLOPT_TIMEOUT_MS, 1000); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1); curl_setopt($curl, CURLOPT_HEADER, 0); $commercialInvoice = curl_exec($curl); curl_close($curl); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $shipment->getPackingListUrl()); curl_setopt($curl, CURLOPT_TIMEOUT_MS, 1000); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1); curl_setopt($curl, CURLOPT_HEADER, 0); $packingList = curl_exec($curl); curl_close($curl); $_pdf = new Zend_Pdf($commercialInvoice); foreach ($_pdf->pages as $page) { $pdf->pages[] = clone $page; } $_pdf = new Zend_Pdf($packingList); foreach ($_pdf->pages as $page) { $pdf->pages[] = clone $page; } } } } catch (Exception $ex) { Mage::logException($ex); } return $pdf; }