2017-09-06 21 views
0

我打印PDF時使用CakePHP和DomPDF打印PDF時出現問題,我很快想從數據庫中獲取一些數據。沒有提取數據,它就像一個魅力。我的功能如下:在Cakephp中使用DomPDF提供一個錯誤無法重新聲明類Dompdf View PdfView

public function tourpdf($tourid = null){ 

    $contain = ['Deliveries','Deliveries.Articletransactions','Deliveries.Orders','Deliveries.Orders.Customers', 
      'Deliveries.Articletransactions.Orderarticles','Deliveries.Articletransactions.Orderarticles.Articles']; 

    $tour = $this->Tours->get($tourid) 
      ->contain($contain); 

    $this->viewBuilder() 
    ->className('Dompdf.Pdf') 
    ->layout('Dompdf.default') 
    ->options(['config' => [ 
     'filename' => $filename, 
     'render' => 'browser', 
     'size' => 'A4', 
     'orientation' => 'landscape' 
    ]]); 

    $this->set('Test', 'Hallo'); 
    $this->set('Tour',$tour); 
} 

當我從最後一行設置數據,我上面拿來,我得到錯誤信息「致命錯誤:不能重新聲明類DOMPDF \查看\ PdfView .. ./src/View/PdfView.php on line 66「。

但是,對最後一行進行註釋,第一組測試正在工作並生成PDF。如何將查詢中的數據設置爲pdf文件?

+0

'Dompdf.Pdf' /'Dompdf.default'?那是什麼?當然,它不是Dompdf庫的一部分。此外,無論什麼時候收到錯誤,請始終發佈** _complete_錯誤**,即**包括_full_ stacktrace **(理想情況下,從日誌中以正確可讀的方式複製),並顯示相關代碼觸發錯誤。另外,請始終提及所涉及軟件的_exact_版本(CakePHP,Dompdf,...) - 謝謝。 – ndm

+0

我按照「https://github.com/DaoAndCo/cakephp-dompdf」的說明操作。我正在使用Cakephp 3和最新版本的插件。 錯誤是完整的錯誤日誌。沒有更多的錯誤。 致命錯誤:無法在第66行的.../src/View/PdfView.php中重新聲明類Dompdf \ View \ PdfView – DS87

回答

1

我得到了一個類似的錯誤,但與Zend框架2.突然間DOMPDF會給出一個錯誤「無法重新聲明(以前聲明在...)」。

我在某些模板中使用了PHP函數,當我刪除它們時,出現了另一個錯誤:「沒有找到塊級別的父級,不好。」。我注意到當我將libxml2從2.9.4升級到2.9.5或更高版本時開始發生這種情況。

的解決這兩個問題爲實例DOMPDF類是這樣的:

use Dompdf\Options; 
$options = new Options(); 
$options->set('enable_html5_parser', true); 
$dompdf = new Dompdf($options); 

隨着enable_html5_parser所有問題就走了。 Here is some more information on this issue

0

令人驚歎!

有了這個問題在Mac 10.12.6 PHP版本30年6月5日 的libxml版本2.9.4

使用正則表達式來刪除空格之間的標籤固定的問題。

$html = preg_replace('/>\s+</', '><', $html);