AdminPdfController
は、/controllers/admin/AdminPdfController.php
に位置する。
URLのsubmitAction=generateDeliverySlipPDF
部分は、このコントローラー内でメソッドprocessGenerateDeliverySlipPDF()
を呼び出します。
public function processGenerateDeliverySlipPDF()
{
if (Tools::isSubmit('id_order')) {
$this->generateDeliverySlipPDFByIdOrder((int)Tools::getValue('id_order'));
} elseif (Tools::isSubmit('id_order_invoice')) {
$this->generateDeliverySlipPDFByIdOrderInvoice((int)Tools::getValue('id_order_invoice'));
} elseif (Tools::isSubmit('id_delivery')) {
$order = Order::getByDelivery((int)Tools::getValue('id_delivery'));
$this->generateDeliverySlipPDFByIdOrder((int)$order->id);
} else {
die(Tools::displayError('The order ID -- or the invoice order ID -- is missing.'));
}
}
このコントローラで使用すると、請求書、注文、...およびその他のPDFを生成するには、この1のような他の方法を見つけることができます:ここで
がこの方法です。
詳細が必要な場合はお気軽にお問い合わせください。
EDIT:
あなたはこれらのクラスをオーバーライドする必要があります適切な方法で書式を変更する場合:
/override/classes/pdf/PDFGenerator.php
:
<?php
/**
* @since 1.5
*/
class PDFGenerator extends PDFGeneratorCore
{
/**
* @param bool $use_cache
* @param string $orientation
* @param string $format
*/
public function __construct($use_cache = false, $orientation = 'P', $format = 'A4')
{
TCPDF::__construct($orientation, 'mm', $format, true, 'UTF-8', $use_cache, false);
$this->setRTL(Context::getContext()->language->is_rtl);
}
}
/override/classes/pdf/PDF.php
:
<?php
/**
* @since 1.5
*/
class PDF extends PDFCore
{
/**
* @param $objects
* @param $template
* @param $smarty
* @param string $orientation
*/
public function __construct($objects, $template, $smarty, $orientation = 'P', $format = 'A4')
{
parent::__construct($objects, $template, $smarty, $orientation);
$this->pdf_renderer = new PDFGenerator((bool)Configuration::get('PS_PDF_USE_CACHE'), $orientation, $format);
}
}
/override/controllers/admin/AdminPdfController.php
:
<?php
class AdminPdfController extends AdminPdfControllerCore
{
public function generatePDF($object, $template)
{
switch($template) {
case PDF::TEMPLATE_DELIVERY_SLIP:
$format = array(210, 50000); // Replace with your desired size
break;
default:
$format = 'A4';
}
$pdf = new PDF($object, $template, Context::getContext()->smarty, 'P', $format);
$pdf->render();
}
}
今、あなたは、各PDFのフォーマットを指定することができます。 $format
についての情報はthis place
です。このコードはテストされていませんが、期待どおりに動作するはずです。問題が発生した場合はお知らせください。
Prestashopの内部クラスパスキャッシュをクリアするためにオーバーライドを追加した後に、/cache/class_index.php
を削除する必要があります。
こんにちは、PDFをPOSロール紙に印刷するときに、ページャーのサイズをカスタマイズする方法はありますか? – Eva
ページサイズとマージンについては、 '/ classes/pdf/PDFGenerator.php'の中の' writePage() 'メソッドをオーバーライドすることができます。このクラスは '/ tools/tcpdf/tcpdf.php'にあるTCPDFライブラリを拡張します。 –
@FlorianLemaitreの答えに追加するだけで、生成された各PDFには/ classes/pdfの独自のクラスがあります。たとえば、Delivery SlipsはHTMLTemplateDeliverySlip.phpによって制御されます。これらは変数を割り当て、結果のPDFファイルのいくつかのプロパティを制御し、もちろんテンプレートも割り当てます。また、 'PDFGenerator'クラスを変更するときにオーバーライドを使用することを忘れないでください。これにより、あなたの人生は長期的にはより簡単になります。 – Eihwaz