0

DOMPDFを使用して画像を含むPDFを生成していますが、奇妙な問題が発生しています。

PDFはループ内で生成され、生成する必要のあるPDFの量はさまざまです。生成されたPDFが1つしかない場合は、すべてうまくいきます。画像(この場合はロゴ)が美しく挿入されています。ただし、何らかの理由で生成する必要のあるPDFが2つ以上ある場合、画像は赤い十字に置き換えられます。ただし、そのバッチで生成された最初のPDFの画像は完全に機能します。つまり、PDF#1の画像は完全に読み込まれ、PDF#2以降の画像は赤い十字に置き換えられます。

DOMPDF(v0.5.2)の最新の安定したリリースを使用しています。私もv0.5.1でテストしましたが、同じ動作をしました。

私がこれをテストしているサーバーは、PHP5.3.8を使用するLinuxで実行されます。これに関するエラーログにエラーはありません(エラーログを有効にしています)。

---編集:画像への「パス」は絶対URLであり、絶対パスまたは相対パス(PHP)ではなく、ループの内容をブラウザー(またはPDFが添付されていない通常のHTMLメール)に出力します。画像を(すべてのメールで)完全に表示します。

--- edit2:ループの最後ですべてのバッファーをフラッシュする関数を使用します(残念ながら、これは私の問題に何も変更しません):

function flush_buffers()
{ 
    ob_end_flush(); 
    ob_flush(); 
    flush(); 
    ob_start(); 
}

私が使用しているループの例:

for ( $i = 0; $i < count($cert); ++$i )
{
    // load the email-template
    ob_start();
    include($template);
    $content = ob_get_contents();
    ob_end_clean();

    // require dompdf
    include_once('dompdf/dompdf_config.inc.php');

    // set PDF path - inside temp dir
    $newpdf = trailingslashit(realpath(sys_get_temp_dir())).$cert[$i]['coupon'].'.pdf';

    // replace shortcodes with wanted content
    $certificate = preg_replace($shortcodes, $replacements, $certificate);
    $certificate = '<html><body>'.$certificate.'</body></html>'."\n";

    $dompdf = new DOMPDF(); 
    $dompdf->load_html($certificate); 
    $dompdf->set_paper($pageformat, $orientation);
    $dompdf->render();
    save_pdf($newpdf, $dompdf->output()); // save PDF

    @flush_buffers();
}

ショートコードの1つは[logo]で、これはimg-tagに置き換えられています。前に述べたように、その画像は最初のPDFでは正常に機能しますが、他のPDFでは機能しません。

4

1 に答える 1

2

dompdf 0.6beta2にアップグレードすると、この問題が修正されました。ファビアンありがとう!

于 2011-11-14T12:40:33.717 に答える