* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ declare(strict_types=1); namespace PrestaShop\PrestaShop\Adapter\PDF; use Context; use Hook; use OrderInvoice; use PDF; use PrestaShop\PrestaShop\Core\Exception\CoreException; use PrestaShop\PrestaShop\Core\PDF\PDFGeneratorInterface; use RuntimeException; use Validate; /** * Generates invoice by invoice ID. */ final class InvoicePdfGenerator implements PDFGeneratorInterface { /** * {@inheritdoc} */ public function generatePDF(array $invoiceId): void { if (count($invoiceId) !== 1) { throw new CoreException(sprintf('"%s" supports generating PDF for single invoice only.', get_class($this))); } $invoiceId = reset($invoiceId); $orderInvoice = new OrderInvoice((int) $invoiceId); if (!Validate::isLoadedObject($orderInvoice)) { throw new RuntimeException('The invoice cannot be found within your database.'); } Hook::exec('actionPDFInvoiceRender', ['order_invoice_list' => [$orderInvoice]]); $pdf = new PDF($orderInvoice, PDF::TEMPLATE_INVOICE, Context::getContext()->smarty); $pdf->render(); } }