From 7eb770440d9540a4d4fe43c1bf55929bbd4055bd Mon Sep 17 00:00:00 2001 From: Daniel Seifert Date: Mon, 8 Jun 2020 16:39:33 +0200 Subject: [PATCH 1/4] add ordermanager combination --- .../AbstractClasses/pdfdocumentsGeneric.php | 26 +++++++++- .../pdfdocumentsGenericInterface.php | 7 +++ .../registryOrdermanagerActions.php | 50 +++++++++++++++++++ .../registryOrdermanagerActionsInterface.php | 26 ++++++++++ metadata.php | 3 +- 5 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 Application/Model/Registries/registryOrdermanagerActions.php create mode 100644 Application/Model/Registries/registryOrdermanagerActionsInterface.php diff --git a/Application/Model/AbstractClasses/pdfdocumentsGeneric.php b/Application/Model/AbstractClasses/pdfdocumentsGeneric.php index 9009880..f589128 100644 --- a/Application/Model/AbstractClasses/pdfdocumentsGeneric.php +++ b/Application/Model/AbstractClasses/pdfdocumentsGeneric.php @@ -66,7 +66,7 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface $sFilename = $this->getFilename(); $oPdf = oxNew(Html2Pdf::class, ...$this->getPdfProperties()); $oPdf->writeHTML($this->getHTMLContent($iSelLang)); - $oPdf->output($sFilename, $target); + return $oPdf->output($sFilename, $target); } /** @@ -84,6 +84,30 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface } } + /** + * @param int $iLanguage + * + * @return null|string + * @throws Html2PdfException + */ + public function getPdfContent($iLanguage = 0) + { + try { + $sFilename = $this->getFilename(); + ob_start(); + //$this->genPdf( $sFilename, $iLanguage, self::PDF_DESTINATION_STDOUT ); + $this->genPdf( $sFilename, $iLanguage, self::PDF_DESTINATION_STRING ); + return ob_get_contents(); + } catch (pdfGeneratorExceptionAbstract $e) { + Registry::get(UtilsView::class)->addErrorToDisplay($e); + Registry::getLogger()->error($e); + } catch (\Exception $e) { + dumpvar($e->getMessage()); + } + + return null; + } + public function setSmartyVars() { $this->oSmarty->assign('oConfig', Registry::getSession()->getConfig()); diff --git a/Application/Model/Interfaces/pdfdocumentsGenericInterface.php b/Application/Model/Interfaces/pdfdocumentsGenericInterface.php index a57fa81..e2a14ed 100644 --- a/Application/Model/Interfaces/pdfdocumentsGenericInterface.php +++ b/Application/Model/Interfaces/pdfdocumentsGenericInterface.php @@ -46,6 +46,13 @@ interface pdfdocumentsGenericInterface */ public function downloadPdf($iLanguage = 0); + /** + * @param int $iLanguage + * + * @return string|null + */ + public function getPdfContent($iLanguage = 0); + /** * @param $sFilename * @param int $iSelLang diff --git a/Application/Model/Registries/registryOrdermanagerActions.php b/Application/Model/Registries/registryOrdermanagerActions.php new file mode 100644 index 0000000..5f634f2 --- /dev/null +++ b/Application/Model/Registries/registryOrdermanagerActions.php @@ -0,0 +1,50 @@ + + * @link http://www.oxidmodule.com + */ + +namespace D3\PdfDocuments\Application\Model\Registries; + +use D3\PdfDocuments\Application\Model\Documents\deliverynotePdf; +use D3\PdfDocuments\Application\Model\Documents\deliverynotewithoutlogoPdf; +use D3\PdfDocuments\Application\Model\Documents\invoicePdf; +use D3\PdfDocuments\Application\Model\Documents\invoicewithoutlogoPdf; +use D3\PdfDocuments\Application\Model\Interfaces\pdfdocumentsOrderInterface; + +class registryOrdermanagerActions extends registryAbstract implements registryOrdermanagerActionsInterface +{ + public function __construct() + { + $this->addGenerator(invoicePdf::class); + $this->addGenerator(deliverynotePdf::class); + $this->addGenerator(invoicewithoutlogoPdf::class); + $this->addGenerator(deliverynotewithoutlogoPdf::class); + } + + /** + * @return string + */ + public function getRequiredGeneratorInterfaceClassName() + { + return pdfdocumentsOrderInterface::class; + } + + /** + * @param $className * generator fully qualified class name + * @return pdfdocumentsOrderInterface + */ + public function getGenerator($className) + { + return $this->_aRegistry[$className]; + } +} \ No newline at end of file diff --git a/Application/Model/Registries/registryOrdermanagerActionsInterface.php b/Application/Model/Registries/registryOrdermanagerActionsInterface.php new file mode 100644 index 0000000..9bee64c --- /dev/null +++ b/Application/Model/Registries/registryOrdermanagerActionsInterface.php @@ -0,0 +1,26 @@ + + * @link http://www.oxidmodule.com + */ + +namespace D3\PdfDocuments\Application\Model\Registries; + +interface registryOrdermanagerActionsInterface extends registryGenericInterface +{ + /** + * @param $className * generator fully qualified class name + */ + public function addGenerator($className); +} \ No newline at end of file diff --git a/metadata.php b/metadata.php index 1465531..5c0684c 100644 --- a/metadata.php +++ b/metadata.php @@ -28,7 +28,7 @@ $sMetadataVersion = '2.0'; $logo = (class_exists(d3utils::class) ? d3utils::getInstance()->getD3Logo() : 'D³'); -$sModuleId = 'pdfDocuments'; +$sModuleId = 'd3PdfDocuments'; /** * Module information */ @@ -38,7 +38,6 @@ $aModule = [ 'de' => $logo.' PDF-Dokumente aus HTML-Templates', 'en' => $logo.' PDF documents from HTML templates', ], - 'thumbnail' => 'picture.png', 'version' => '1.0', 'author' => 'D³ Data Development (Inh.: Thomas Dartsch)', 'email' => 'support@shopmodule.com', From 4c561976a6691c47b2150245bcab3ad56dc1b82f Mon Sep 17 00:00:00 2001 From: Daniel Seifert Date: Tue, 9 Jun 2020 14:56:14 +0200 Subject: [PATCH 2/4] document can save to disc --- .../AbstractClasses/pdfdocumentsGeneric.php | 41 ++++++++++++++----- .../AbstractClasses/pdfdocumentsOrder.php | 10 +++-- .../Documents/deliverynotewithoutlogoPdf.php | 8 ++++ Application/Model/Documents/invoicePdf.php | 11 +++-- .../Model/Documents/invoicewithoutlogoPdf.php | 8 ++++ .../pdfdocumentsGenericInterface.php | 6 +++ 6 files changed, 66 insertions(+), 18 deletions(-) diff --git a/Application/Model/AbstractClasses/pdfdocumentsGeneric.php b/Application/Model/AbstractClasses/pdfdocumentsGeneric.php index f589128..bdda72c 100644 --- a/Application/Model/AbstractClasses/pdfdocumentsGeneric.php +++ b/Application/Model/AbstractClasses/pdfdocumentsGeneric.php @@ -28,10 +28,12 @@ use Spipu\Html2Pdf\Html2Pdf; abstract class pdfdocumentsGeneric extends Base implements genericInterface { - const PDF_DESTINATION_DOWNLOAD = 'D'; // force download in browser - const PDF_DESTINATION_STDOUT = 'I'; // show in browser plugin if available, otherwise download - const PDF_DESTINATION_FILE = 'F'; // save as local file - const PDF_DESTINATION_STRING = 'S'; // output as string + const PDF_DESTINATION_DOWNLOAD = 'D'; // force download in browser + const PDF_DESTINATION_STDOUT = 'I'; // show in browser plugin if available, otherwise download + const PDF_DESTINATION_FILE = 'F'; // save as local file + const PDF_DESTINATION_FILEANDSTDOUT = 'FI'; // output as local file and show in browser plugin + const PDF_DESTINATION_FILEANDDOWNLOAD = 'FD'; // output as local file and force download in browser + const PDF_DESTINATION_STRING = 'S'; // output as string const PDF_ORIENTATION_PORTRAIT = 'P'; const PDF_ORIENTATION_LANDSCAPE = 'L'; @@ -59,11 +61,12 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface * @param $sFilename * @param int $iSelLang * @param string $target + * + * @return mixed|string * @throws Html2PdfException */ public function genPdf($sFilename, $iSelLang = 0, $target = self::PDF_DESTINATION_STDOUT) { - $sFilename = $this->getFilename(); $oPdf = oxNew(Html2Pdf::class, ...$this->getPdfProperties()); $oPdf->writeHTML($this->getHTMLContent($iSelLang)); return $oPdf->output($sFilename, $target); @@ -84,6 +87,27 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface } } + /** + * @param string $path + * @param int $iLanguage + * + * @throws Html2PdfException + */ + public function savePdfFile($path, $iLanguage = 0) + { + try { + $sFilename = $this->getFilename(); + $this->genPdf( + rtrim($path, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.$sFilename, + $iLanguage, + self::PDF_DESTINATION_FILE + ); + } catch (pdfGeneratorExceptionAbstract $e) { + Registry::get(UtilsView::class)->addErrorToDisplay($e); + Registry::getLogger()->error($e); + } + } + /** * @param int $iLanguage * @@ -94,15 +118,10 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface { try { $sFilename = $this->getFilename(); - ob_start(); - //$this->genPdf( $sFilename, $iLanguage, self::PDF_DESTINATION_STDOUT ); - $this->genPdf( $sFilename, $iLanguage, self::PDF_DESTINATION_STRING ); - return ob_get_contents(); + return $this->genPdf( $sFilename, $iLanguage, self::PDF_DESTINATION_STRING ); } catch (pdfGeneratorExceptionAbstract $e) { Registry::get(UtilsView::class)->addErrorToDisplay($e); Registry::getLogger()->error($e); - } catch (\Exception $e) { - dumpvar($e->getMessage()); } return null; diff --git a/Application/Model/AbstractClasses/pdfdocumentsOrder.php b/Application/Model/AbstractClasses/pdfdocumentsOrder.php index 78b3b62..cefd14d 100644 --- a/Application/Model/AbstractClasses/pdfdocumentsOrder.php +++ b/Application/Model/AbstractClasses/pdfdocumentsOrder.php @@ -22,6 +22,7 @@ use D3\PdfDocuments\Application\Model\Interfaces\pdfdocumentsOrderInterface as o use \OxidEsales\Eshop\Application\Model\Order; use OxidEsales\Eshop\Application\Model\Payment; use OxidEsales\Eshop\Application\Model\User; +use Spipu\Html2Pdf\Exception\Html2PdfException; abstract class pdfdocumentsOrder extends pdfdocumentsGeneric implements orderInterface { @@ -86,9 +87,12 @@ abstract class pdfdocumentsOrder extends pdfdocumentsGeneric implements orderInt } /** - * @param $sFilename - * @param int $iSelLang + * @param $sFilename + * @param int $iSelLang * @param string $target + * + * @return mixed|string|void + * @throws Html2PdfException * @throws noBaseObjectSetException */ public function genPdf($sFilename, $iSelLang = 0, $target = 'I') @@ -98,6 +102,6 @@ abstract class pdfdocumentsOrder extends pdfdocumentsGeneric implements orderInt throw $e; } - parent::genPdf($sFilename, $iSelLang, $target); + return parent::genPdf($sFilename, $iSelLang, $target); } } \ No newline at end of file diff --git a/Application/Model/Documents/deliverynotewithoutlogoPdf.php b/Application/Model/Documents/deliverynotewithoutlogoPdf.php index da32ac7..d348b2e 100644 --- a/Application/Model/Documents/deliverynotewithoutlogoPdf.php +++ b/Application/Model/Documents/deliverynotewithoutlogoPdf.php @@ -35,6 +35,14 @@ class deliverynotewithoutlogoPdf extends deliverynotePdf return "ORDER_OVERVIEW_PDF_DNOTE_WITHOUT_LOGO"; } + /** + * @return string + */ + public function getTypeForFilename() + { + return 'delnote-nl'; + } + /** * @return string */ diff --git a/Application/Model/Documents/invoicePdf.php b/Application/Model/Documents/invoicePdf.php index c4899fc..4a7edaf 100644 --- a/Application/Model/Documents/invoicePdf.php +++ b/Application/Model/Documents/invoicePdf.php @@ -20,6 +20,7 @@ namespace D3\PdfDocuments\Application\Model\Documents; use D3\PdfDocuments\Application\Model\AbstractClasses\pdfdocumentsOrder; use D3\PdfDocuments\Application\Model\Exceptions\noBaseObjectSetException; use D3\PdfDocuments\Application\Model\Interfaces\pdfdocumentsOrderinvoiceInterface; +use Spipu\Html2Pdf\Exception\Html2PdfException; class invoicePdf extends pdfdocumentsOrder implements pdfdocumentsOrderinvoiceInterface { @@ -51,10 +52,12 @@ class invoicePdf extends pdfdocumentsOrder implements pdfdocumentsOrderinvoiceIn } /** - * @param $sFilename - * @param int $iSelLang + * @param $sFilename + * @param int $iSelLang * @param string $target - * @return void + * + * @return mixed|string|void + * @throws Html2PdfException * @throws noBaseObjectSetException */ public function genPdf( $sFilename, $iSelLang = 0, $target = 'I' ) @@ -63,7 +66,7 @@ class invoicePdf extends pdfdocumentsOrder implements pdfdocumentsOrderinvoiceIn $this->setInvoiceDate(); $this->saveOrderOnChanges(); - parent::genPdf( $sFilename, $iSelLang, $target ); + return parent::genPdf( $sFilename, $iSelLang, $target ); } public function setInvoiceNumber() diff --git a/Application/Model/Documents/invoicewithoutlogoPdf.php b/Application/Model/Documents/invoicewithoutlogoPdf.php index 3d905e0..9a09606 100644 --- a/Application/Model/Documents/invoicewithoutlogoPdf.php +++ b/Application/Model/Documents/invoicewithoutlogoPdf.php @@ -36,6 +36,14 @@ class invoicewithoutlogoPdf extends invoicePdf return "ORDER_OVERVIEW_PDF_STANDART_WITHOUT_LOGO"; } + /** + * @return string + */ + public function getTypeForFilename() + { + return 'invoice-nl'; + } + /** * @return string */ diff --git a/Application/Model/Interfaces/pdfdocumentsGenericInterface.php b/Application/Model/Interfaces/pdfdocumentsGenericInterface.php index e2a14ed..95180b6 100644 --- a/Application/Model/Interfaces/pdfdocumentsGenericInterface.php +++ b/Application/Model/Interfaces/pdfdocumentsGenericInterface.php @@ -53,6 +53,12 @@ interface pdfdocumentsGenericInterface */ public function getPdfContent($iLanguage = 0); + /** + * @param string $path + * @param int $iLanguage + */ + public function savePdfFile($path, $iLanguage = 0); + /** * @param $sFilename * @param int $iSelLang From cf2c61078ab6f71f2176000ec07ffe287ae43ebd Mon Sep 17 00:00:00 2001 From: Daniel Seifert Date: Tue, 9 Jun 2020 22:49:47 +0200 Subject: [PATCH 3/4] set PDF metadata --- Application/Model/AbstractClasses/pdfdocumentsGeneric.php | 8 ++++++++ Application/views/tpl/documents/invoice/invoice.tpl | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Application/Model/AbstractClasses/pdfdocumentsGeneric.php b/Application/Model/AbstractClasses/pdfdocumentsGeneric.php index bdda72c..dbb7a54 100644 --- a/Application/Model/AbstractClasses/pdfdocumentsGeneric.php +++ b/Application/Model/AbstractClasses/pdfdocumentsGeneric.php @@ -68,7 +68,12 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface public function genPdf($sFilename, $iSelLang = 0, $target = self::PDF_DESTINATION_STDOUT) { $oPdf = oxNew(Html2Pdf::class, ...$this->getPdfProperties()); + $oPdf->setTestIsImage(false); $oPdf->writeHTML($this->getHTMLContent($iSelLang)); + $oPdf->pdf->SetAuthor(Registry::getConfig()->getActiveShop()->getFieldData('oxname')); + $oPdf->pdf->SetTitle(Registry::getLang()->translateString($this->getTitleIdent())); + $oPdf->pdf->SetCreator('D³ PDF Documents for OXID eShop'); + $oPdf->pdf->SetSubject(NULL); return $oPdf->output($sFilename, $target); } @@ -142,6 +147,7 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface */ public function getHTMLContent($iSelLang = 0) { + $blCurrentRenderFromAdmin = self::$_blIsAdmin; self::$_blIsAdmin = $this->renderTemplateFromAdmin(); $lang = Registry::getLang(); @@ -155,6 +161,8 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface $lang->setTplLanguage($currTplLang); + self::$_blIsAdmin = $blCurrentRenderFromAdmin; + return $content; } diff --git a/Application/views/tpl/documents/invoice/invoice.tpl b/Application/views/tpl/documents/invoice/invoice.tpl index 71075d8..f1ddb8c 100644 --- a/Application/views/tpl/documents/invoice/invoice.tpl +++ b/Application/views/tpl/documents/invoice/invoice.tpl @@ -6,7 +6,7 @@ [{include file="d3pdfstyle.css"}] - + [{block name="pdfTopingFile"}] [{include file="d3pdfheader.tpl" showLogo=true}] From 03984e39e952afe52ae4c52a8952b83c64f49ee8 Mon Sep 17 00:00:00 2001 From: Daniel Seifert Date: Tue, 9 Jun 2020 23:44:33 +0200 Subject: [PATCH 4/4] add simple fold and punch marks --- Application/views/tpl/documents/inc/din5008.tpl | 6 ++++++ Application/views/tpl/documents/invoice/invoice.tpl | 5 +++++ metadata.php | 1 + 3 files changed, 12 insertions(+) create mode 100644 Application/views/tpl/documents/inc/din5008.tpl diff --git a/Application/views/tpl/documents/inc/din5008.tpl b/Application/views/tpl/documents/inc/din5008.tpl new file mode 100644 index 0000000..9319a57 --- /dev/null +++ b/Application/views/tpl/documents/inc/din5008.tpl @@ -0,0 +1,6 @@ +[{* fold marks *}] +
+
+ +[{* punch mark *}] +
\ No newline at end of file diff --git a/Application/views/tpl/documents/invoice/invoice.tpl b/Application/views/tpl/documents/invoice/invoice.tpl index f1ddb8c..ceb1246 100644 --- a/Application/views/tpl/documents/invoice/invoice.tpl +++ b/Application/views/tpl/documents/invoice/invoice.tpl @@ -18,6 +18,11 @@ [{/block}] + [{* +++++ fold and punch marks +++++ *}] + [{block name="pdfDIN5008Markings"}] + [{include file="d3din5008.tpl"}] + [{/block}] + [{* +++++ main page part +++++ *}] [{block name="pdfHeadingFile"}] [{block name="pdfHeaderFile"}] diff --git a/metadata.php b/metadata.php index 5c0684c..9328a04 100644 --- a/metadata.php +++ b/metadata.php @@ -63,6 +63,7 @@ $aModule = [ 'd3pdfheader.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/header.tpl', 'd3pdffooter.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/footer.tpl', + 'd3din5008.tpl' => 'd3/pdfdocuments/Application/views/tpl/documents/inc/din5008.tpl', 'd3pdfstyle.css' => 'd3/pdfdocuments/out/src/css/pdfStyling.css' ], 'events' => [],