![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/extmag/shiplab/Helper/ |
<?php /** * Copyright © Extmag. All rights reserved. */ namespace Extmag\Shiplab\Helper; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\Exception\FileSystemException; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Math\Random; use TCPDI; use Zend_Pdf; use Zend_Pdf_Exception; use Zend_Pdf_Image; use Zend_Pdf_Page; class Pdf extends Filer { /** * @param \Extmag\Shiplab\Model\Label $model * @param $documentType * @param null $pdf * @param null $tnFilter * @return bool|TCPDI|null * @throws FileSystemException * @throws LocalizedException * @throws Zend_Pdf_Exception */ public function getPdfPages($model, $documentType, $pdf = null, $tnFilter = null) { if (empty($pdf)) { $pdf = new TCPDI(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); } $carrierCode = $model->getCarrierCode(); if ($documentType == 'label') { $trackingNumber = $model->getTrackingNumbers(); foreach ($trackingNumber as $track) { if (empty($tnFilter) || $tnFilter == $track) { $labelFileString = ''; $labelPath = $this->url->getMediaPath() . '/' . $this->url->getExtmagMediaPath($carrierCode, $documentType, 'gif') . $track . '.gif'; if ($this->driver->isFile($labelPath)) { $labelFileString = $this->driver->fileGetContents($labelPath); if ($labelFileString) { $pdfZend = new Zend_Pdf(); $pdfZend->properties['Title'] = 'Shipping Label'; $pdfZend->properties['Author'] = 'Extmag'; $pdfZend->properties['Producer'] = 'Zend PDF'; $pdfZend->properties['Creator'] = 'Zend PDF'; $pdfZend->properties['CreationDate'] = 'D:' . date('YmdHis', time()); $pdfZend->properties['ModDate'] = 'D:' . date('YmdHis', time()); $directory = $this->filesystem->getDirectoryWrite(DirectoryList::TMP); $directory->create(); $image = imagecreatefromstring($labelFileString); if (!$image) { return false; } imageinterlace($image, 0); $tmpFileName = $directory->getAbsolutePath( 'extmag_labels_' . uniqid(Random::getRandomNumber()) . time() . '.png' ); imagepng($image, $tmpFileName); $xSize = imagesx($image); $ySize = imagesy($image); $page = new Zend_Pdf_Page($xSize, $ySize); $image = Zend_Pdf_Image::imageWithPath($tmpFileName); $page->drawImage($image, 0, 0, $xSize, $ySize); $directory->delete($directory->getRelativePath($tmpFileName)); if (is_resource($image)) { imagedestroy($image); } $pdfZend->pages[] = $page; $labelFileString = $pdfZend->render(); } } else { $labelPath = $this->url->getMediaPath() . '/' . $this->url->getExtmagMediaPath($carrierCode, $documentType, 'pdf') . $track . '.pdf'; if ($this->driver->isFile($labelPath)) { $labelFileString = $this->getFileData($carrierCode, $track, 'pdf', $documentType); } } $this->mergePages($pdf, $labelFileString); } } } else { $masterId = $model->getMasterId(); for ($i = 1; $i < 300; $i++) { $labelFileString = $this->getFileData( $carrierCode, $masterId . ($i == 1 ? '' : '-' . $i), 'pdf', $documentType ); if ($labelFileString) { $this->mergePages($pdf, $labelFileString); } else { break; } } } return $pdf; } /** * @param $pdf * @param $data */ protected function mergePages(&$pdf, $data) { if (!empty($data)) { $pagecount = $pdf->setSourceData($data); for ($i = 1; $i <= $pagecount; $i++) { $tplidx = $pdf->importPage($i); $size = $pdf->getTemplatesize($tplidx); $orientation = ($size['w'] > $size['h']) ? 'L' : 'P'; $pdf->AddPage($orientation); $pdf->setPageFormatFromTemplatePage($i, $orientation); $pdf->useTemplate($tplidx); $pdf->importAnnotations($i); } } } }