2011-11-11 50 views
0

我正在使用DOMPDF生成可以包含圖像的PDF,而且我有一個奇怪的問題。PDF循環內部的圖像問題

PDF在循環內部生成,並且需要生成的PDF數量不同。當只有1 PDF生成一切順利。圖像(或在這種情況下的標誌)被插入美麗。 但是,當有2個或更多的PDF由於某種原因必須生成時,圖像被替換爲紅色十字。但是:該批處理中生成的第一個PDF中的圖像完美無缺。因此:PDF#1中的圖像完美加載,PDF#2中的圖像正在被紅十字替代。

我正在使用DOMPDF(v0.5.2)的最新穩定版本。我也用v0.5.1測試過,但是具有相同的行爲。

我測試的服務器運行在Linux上,使用PHP 5.3.8。在錯誤日誌中沒有關於這個錯誤(並且我確實啓用了錯誤日誌記錄)。

---編輯: 圖像的「路徑」是絕對URL,而不是絕對或相對(PHP)路徑,並將循環內容輸出到瀏覽器(或普通的HTML電子郵件,無PDF附件),它完美地顯示圖像(在所有郵件中)。

--- 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(); 
} 

其中一個簡碼是[徽標],並且正在被替換爲img標籤。正如我之前提到的那樣:該圖像在第一PDF中正常工作,但不在其他PDF中。

+0

你可以試試最新的beta版本(0.6 beta 2)嗎?它具有文件路徑和圖像的改進。 SVN中繼還有一種處理圖像文件的新方法,所以你也可以嘗試。 –

+0

嗨Fabien,感謝您的答覆:-)我希望避免使用測試版,因爲它是一個測試版(我正在做的應該是在現場環境中使用)。但如果你堅持我應該嘗試它,我會:) – Hiranthi

+0

在許多方面,0.6分支比0.5分支更好,並且全球更穩定。 –

回答

2

升級到dompdf 0.6beta2修復了這個問題。謝謝Fabien!