From 4c561976a6691c47b2150245bcab3ad56dc1b82f Mon Sep 17 00:00:00 2001 From: Daniel Seifert Date: Tue, 9 Jun 2020 14:56:14 +0200 Subject: [PATCH] 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