2010-03-26 48 views
5

使用php和TCPDF來生成一個pdf文件。除了當我嘗試使用ImageEPS()將EPS圖像寫入pdf時,一切都很好。什麼都沒有出現。沒有錯誤(它肯定能找到文件)。它只是顯示爲空白。eps圖像(來自inkscape)沒有出現在tcpdf

光柵圖像(如PNG/JPG)工作得很好。

我正在使用Inkscape來保存.eps文件。當我在任何其他程序中打開文件時,它會打開很好。它唯一的TCPDF,它沒有顯示出來。

回答

3

我已經在Adobe Illustrator中打開我的* .ai文件並將該文件保存爲「Illustrator 3」版本以解決該問題。任何更新的版本產生你描述的結果(除了「Illustrator 8」,它給了我的* .ai文件的B & W版本)。

+0

我正在測試TCPDF庫,可悲的是,我發現只有Illustrator 3文件可以工作。我可以確認,當我使用Illustrator 8時,它幾乎全是黑色的(不是黑白,棕色文本通過,但沒有矢量圖形顏色),而Illustrator 9和以上版本根本不起作用。 – Josh 2011-09-30 14:22:36

2

有點晚了,但我有同樣的問題。

對我來說,解決方法是導出爲PDF和TCPDF重用這個PDF/FPDI有:

$num_pages = $pdf->setSourceFile(path_to_file); 
$template_id = $pdf->importPage(1); //if the grafic is on page 1 
$pdf->useTemplate($template_id,$x,$y,$width,$height); 
0

在TCPDF(6.0.004)的ImageEPS功能還沒有完全實現與文檔指出以下:

/** 
* Embed vector-based Adobe Illustrator (AI) or AI-compatible EPS files. 
* NOTE: EPS is not yet fully implemented, use the 
* setRasterizeVectorImages() method to enable/disable rasterization of 
* vector images using ImageMagick library. 
* ... 
*/ 
public function ImageEps(...){/*...*/} 

TCPDF(6.0.004)檢查其創建者的eps元數據。如果創建者是Adobe Illustrator,則會進行版本檢查,如果版本高於8,則會生成錯誤。 除Adobe Illustrator以外的創作者未被選中,並且該功能被允許繼續。似乎並不像TCPDF解析PS序言,這可能是爲什麼不支持所有AI版本的原因之一。以下是PostScript Language Reference說,關於序言部分:

  • 的序言是一組的applica- 重刑可以在腳本執行使用特定應用程序的定義。它包含在應用程序生成的每個 PostScript文件的第一部分中。它包含與 匹配的定義,該應用程序的輸出功能與 PostScript語言支持的功能匹配。

由於prolog沒有被解析,所以正確解釋文件會很麻煩。

Inkscape(0.48.3.1 r9886)用cairo創建epses,不會發生錯誤,並且該函數將繼續。 TCPDF將部分解釋eps,但由於它不輸出任何內容,輸出可能會由於某些錯誤處理而被刪除。但這只是一個猜測。

我有更多的成功與出口我EPS爲SVG與 Inkscape的-D --file = filename.eps --export-純SVG = filename.svg 和使用ImageSVG代替。注意:這個功能也沒有完全實現,所以我不能保證它會起作用。我只測試了一個非常基本的eps。