2016-12-02 6 views
0

をダウンロードしていないファイル:PDFデータは、私はこのコードを使用して、注文、請求書のPDFファイルをプレビューし、ダウンロードしたい表示が、

public function generatePDFByIdOrder() 
    { 
     $order = new Order(1); //I want to download the invoice PDF of $order_id '1' 
     if (!Validate::isLoadedObject($order)) { 
      throw new PrestaShopException('Can\'t load Order object'); 
     } 

     $order_invoice_collection = $order->getInvoicesCollection(); 
     $this->generatePDF($order_invoice_collection, PDF::TEMPLATE_DELIVERY_SLIP); 
    } 

    public function generatePDF($object, $template) 
    { 
     $pdf = new PDF($object, $template, Context::getContext()->smarty); 
     $pdf->render(); 
    } 

し、次のコードでそれを呼び出す: $order = new order(); echo $order->generatePDFByIdOrder();

私は、PDFのデータを持っていますブラウザコンソールには印刷されますが、ダウンロードされません。 enter image description here

pdfファイルをダウンロードするには、どうすればこのデータを操作できますか?

+1

あなたはおそらく正しい 'ヘッダ()' – Jakuje

答えて

1

PrestaShop use TCPDF。このように

編集generatePDF:PDF意志

header("Content-type:application/pdf"); 

しかし、「ダウンロード」:

public function generatePDF($object, $template) 
{ 
    $pdf = new PDF($object, $template, Context::getContext()->smarty); 
    $pdf->Output('name.pdf', 'I'); 
} 
+0

ストレンジを追加する必要があり、私は '不明なエラーがあります:未定義のメソッドのPDFへの呼び出し::出力を() '。 – androniennn

+0

PrestaShopバージョン? –

+0

1.6.1.9バージョン。 – androniennn

0

私はあなただけなので同じようTCPDFでPDFをレンダリングする前に、適切なヘッダーを設定する必要が推測しますユーザーのブラウザ設定に依存します。それはそれらをダウンロードするかもしれません(この場合、Content-Disposition:attachmentという別のヘッダーを設定するか、ブラウザー内に表示する必要があります)。

+0

'$ pdf-> render();'を 'output'に変更してはいけませんか? – androniennn

0

別のコントローラを作成してPDFファイルをレンダリングし、そのコントローラを常に新しいタブで開くことをお勧めします。 DOMPDFライブラリを使用して別のロジックを持つのに役立ちます。次のように

書コントローラ(invoice.php)

include_once(_PS_MODULE_DIR_.'supercehckout/libraries/dompdf/dompdf_config.inc.php'); 

class SuperCheckoutInvoiceModuleFrontController extends ModuleFrontController 
{ 
    public function initContent() 
    { 
       parent::initContent(); 
       $this->generateInvoice(ORDER_ID); 
    } 
} 

注あろう:SuperCheckoutは、例えば、モジュール名です。次のように

generateInvoice()関数は次のようになります。

function generateInvoice($order_id) 
{ 
     $dompdf = new DOMPDF(); 
     $html = utf8_decode(INVOICE_HTML); 
     $dompdf->load_html(INVOICE_HTML); 
     $dompdf->render(); 
} 
関連する問題