Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 /**
  * 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;
 }
Exemplo n.º 3
0
 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;
 }