2017-09-06 13 views
0

すぐにpdfを印刷する前にデータベースからデータを取得したいときにCakePHPとDomPDFを使用してPDFを印刷する際に問題があります。データをフェッチせずに、それはcharmeのように動作します。 My機能は以下の通りです: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を再宣言することはできません。.. 66行目の./src/View/PdfView.php "を参照してください。

最後の行をコメントアウトしても、テストで最初のセットが機能しており、PDFが生成されます。クエリからPDFファイルにデータを取得する方法を設定するにはどうすればよいですか?

+0

'Dompdf.Pdf' /' Dompdf.default'?それは何ですか?確かに、それはDompdfライブラリの一部ではありません。また、エラーを受け取るたびに、必ず_complete_エラー**、つまり_full_ stacktrace **(理想的には、ログから適切に読み込み可能な形式でコピーされます)を含む**を投稿し、エラーをトリガーします。また、関係するソフトウェア(CakePHP、Dompdf、...)の_exact_バージョンについても常に言及してください - ありがとうございます。 – ndm

+0

私は "https://github.com/DaoAndCo/cakephp-dompdf"のinstrunctionsに従った。私はCakephp 3とプラグインの最新バージョンを使用しています。 エラーは完全なエラーログです。これ以上のエラーはありません。 '致命的なエラー:66行目の.../src/View/PdfView.phpのDompdf \ View \ PdfViewクラスを再宣言できません – DS87

答えて

1

Zend Framework 2で同様のエラーが発生しました。突然DOMPDFが発生すると、「Can not redeclare(以前に宣言された...)」というエラーが発生します。

いくつかのテンプレートにPHP関数がありましたが、削除したときに「ブロックレベルの親が見つかりませんでした」というエラーが発生しました。私は、libxml2を2.9.4から2.9.5にアップグレードしたときにこれが起きたことに気付きました。すべての問題が去っていきましたenable_html5_parserで

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

の両方の問題を解決するには、このようなDOMPDFクラスをインスタンス化することでした。 Here is some more information on this issue

0

素晴らしい!

は、タグの間の空白を削除する正規表現を使用してMAC 10.12.6 PHPバージョン5.6.30 のlibxmlバージョン2.9.4

でこの問題は、問題を修正していました。

$html = preg_replace('/>\s+</', '><', $html); 
関連する問題