2013-03-01 23 views
2
require_once '../system/conf/options.class.php'; 

$file = basename(urldecode($_GET['logo'])); 
$fileDir = Options::getSetting('S_UPLOAD_DIRECTORY'); 

if (file_exists($fileDir . $file)) { 

    // Note: You should probably do some more checks 
    // on the filetype, size, etc. 
    $contents = file_get_contents($fileDir . $file); 

    $ext = @end(explode('.', $file)); 
    $file = @end(explode('/', $file)); 

    // Note: You should probably implement some kind 
    // of check on filetype 
    header('Content-type: image/' . $ext); 

    echo $contents; 

} 

在做<img class="logo" src="getLogo.php?logo={$PAGE['general']['logo_file']}" />從PDF模板中,我得到這個錯誤DOMPDF 「圖像類型未知」 通過getImage.php設置

圖像類型未知 getLogo.php?標誌= 75c562d5-8718 -411c-a464-72c4d1c35f49.png

我也試過<img class="logo" href="getLogo.php?logo={$PAGE['general']['logo_file']}" />不顯示錯誤,但不顯示圖像,無論是。

有沒有簡單的解決方案?

+0

如何你正在實現dompdf嗎?你的getLogo.php腳本可能已經足夠了,但是由於你的PHP需要被解析,所以你的腳本必須通過web服務器來訪問,這會影響你如何將你的文檔加載到dompdf中以及如何引用圖像源碼 – BrianS 2013-03-02 04:56:51

+0

我很確定,因爲dompdf運行在服務器上的php加載web根目錄以外的圖像文件不會是一個問題,所以目前我' m只是加載靜態圖像。如果它在生產中遇到問題,我可能會將它們移動到文檔根目錄,因爲它們只是徽標。至於我如何實施dompdf我很確定我知道你的意思。我通過smarty獲取dmpdf obj的html,並傳輸pdf。 – DavidScherer 2013-03-03 06:40:59

+1

是的,從文件系統加載圖像很好。就實現而言,我的意思是你使用的代碼。根據你的評論,我猜你正在生成你的HTML文檔,然後使用'$ dompdf-> load_html()'將它加載到dompdf中。在這種情況下,dompdf將文檔視爲來自本地文件系統。這意味着在沒有域的情況下引用的圖像將通過本地文件系統獲取。因此,PHP腳本的圖像引用將不起作用,因爲PHP不會被解析。簡而言之,使用類似' BrianS 2013-03-04 04:44:38

回答

0

根據評論...您正在生成您的HTML文檔,然後使用$dompdf->load_html()將其加載到Dompdf中。在這種情況下,Dompdf將文檔視爲來自本地文件系統。這意味着在沒有域的情況下引用的圖像將通過本地文件系統獲取。因此,PHP腳本的圖像引用將不起作用,因爲PHP不會被解析。它的短,使用類似<img src="http://example.com/getLogo.php...「>如果你能。


有幾個SO答案可能在確定使用load_html_fileload_html加載本地文件時的路徑是如何確定的幫助。