私はJoomla 3コンポーネントでdompdfを使用しようとしていますが、ダウンロードするために生成するPDfは常に破損しています。私はテキストエディタでPDFファイルを開いて、それが壊れている理由は、私が必要としているHTMLをイオン的に渡しているにもかかわらず、すべてのヘッダー、リンク、スタイルシート、およびjavomriptがjoomlaからであることがわかりました。joomlaでdompdf-> streamが動作しない
私は私のJoomlaのコンポーネントビュー(default.phpテンプレート)で使用しているコードは次のとおりです。
<?php
defined('_JEXEC') or die('Restricted access');
ob_start();
?>
<div class="qp-div1">
<table class="table table-bordered">
<thead>
<tr>
<th colspan="2">Account Status</th>
</tr>
</thead>
<tbody>
<tr>
<th>Reference</th>
<td><?php echo $this->userdetails['cardcode']; ?></td>
... more html
<?php
require_once('dompdf/autoload.inc.php');
use Dompdf\Dompdf;
$html = ob_get_contents();
$dompdf = new Dompdf();
$dompdf->setPaper('A4', 'portrait');
$dompdf->setBasePath('');
$dompdf->loadHtml($html);
$dompdf->render();
$dompdf->stream('order');
ob_flush();
ob_end_clean();
?>
私はあなたがDOMPDFを実行したときに、私は> loadHtmlをdompdf-したかっただけでHTMLを渡したにもかかわらずそれはすべてのtehスタイルシートを含むすべてのjoomla html、javascriptおよびmoreを使用して終了しました。
出力をファイルにダンプするためにdompdf-> output()を使用すると、ファイルは実際には問題ありません。したがって、問題が発生しているのはdompdf-> streamだけです。
私はPDFファイルをダンプするために使用されるコードは、ストリームコマンドの前に挿入し、このように見えた:
$file_to_save = '/temp/pdf/file.pdf';
file_put_contents($file_to_save, $dompdf->output());
$dompdf->stream('order');
は、私が使用してから$ dompdf->ストリームコマンドを停止するために何かできることはありますincluddingすべてJoomlaのhtml?私は(などの余分なヘッダを避けるために)私のcompnent内の追加ファイルを使用しますが、joomlaのにページをロードしないことで、私の問題を修正しました
乾杯
下記の例のように$ dompdf->ストリームを出力をフラッシュする前に()コマンドは、おそらくあなたの問題の原因ではありません。 PDFをストリーミングした後、dompdfはスクリプトの処理を終了しません。通常、出力バッファリングが有効になっている場合、このような問題が発生します。私の推測では、1)PDF以外のコンテンツがdompdfがPDFをストリームする前に出力バッファに取り込まれているか、または2)Joomlaはdompdfが完了した後に何かをやっている。これをテストする1つの方法は、レンダリングする前に出力バッファをクリーニングし、ストリームメソッドを呼び出した後にexit()することです。 – BrianS