eps图像(来自inkscape)没有出现在tcpdf中

时间:2010-03-26 18:17:02

标签: php vector eps tcpdf

使用php和TCPDF生成pdf文件。除非我尝试使用ImageEPS()将EPS图像写入pdf,否则一切都很有效。什么都没有出现。没有错误(它肯定能找到文件)。它只是显示为空白区域。

光栅图像(如PNG / JPG)工作正常。

我正在使用Inkscape来保存.eps文件。当我在任何其他程序中打开文件时,它打开就好了。它唯一没有出现的TCPDF。

3 个答案:

答案 0 :(得分:3)

我在Adobe Illustrator中打开了我的* .ai文件并将文件另存为“Illustrator 3”版本以克服该问题。任何更新的版本都会产生你描述的结果(“Illustrator 8”除外,它给了我* .ai文件的B& W版本)。

答案 1 :(得分:2)

有点晚了,但我遇到了同样的问题。

对我来说,解决方法是导出为PDF并在TCPDF / FPDI中重用此PDF:

$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);

答案 2 :(得分: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关于序言部分的内容:

  • prolog是一组特定于应用程序的过程定义,适用于 可以用于执行其脚本。它被列为每个人的第一部分 应用程序生成的PostScript文件。它包含匹配的定义 具有支持的功能的应用程序的输出功能 PostScript语言。

由于未解析prolog,因此正确解释文件很麻烦。

Inkscape(0.48.3.1 r9886)使用cairo创建epses,不会发生错误,该函数将继续。 TCPDF将部分解释eps,但由于它不输出任何内容,输出可能会被某些错误处理删除。但这只是猜测。

我将eps导出到svg时取得了更大的成功     inkscape -D --file = filename.eps --export-plain-svg = filename.svg 并使用ImageSVG代替。注意:此功能也未完全实现,因此我无法保证它能够正常工作。我只测试了一个非常基本的eps。