Inkscape制作的EPS图片无法在TCPDF中显示

5
使用php和TCPDF生成pdf文件。除了使用ImageEPS()将EPS图像写入pdf时出现问题,其他都很好。什么也没有显示出来,没有错误(它肯定可以找到文件)。它只显示为空白区域。
光栅图像(如PNG/JPG)运行良好。
我正在使用Inkscape保存.eps文件。当我在任何其他程序中打开文件时,它都可以正常打开。只有在TCPDF中没有显示出来。
3个回答

3

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


我也在测试TCPDF库,但不幸的是,我发现只有Illustrator 3文件可以正常工作。我可以确认,当我使用Illustrator 8时,几乎全部都是黑色(不是黑白,棕色文本可以显示,但没有矢量艺术品的颜色),而Illustrator 9及以上则完全无法工作。 - Josh

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

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 prolog,这可能是不支持所有AI版本的原因之一。以下是PostScript Language Reference关于prolog部分的说明:
  • prolog是应用程序特定过程定义的集合,应用程序可以在其脚本的执行中使用它。它作为应用程序生成的每个PostScript文件的第一部分包含在内。它包含将应用程序的输出功能与PostScript语言支持的功能匹配的定义。

由于未解析prolog,因此正确解释文件会有问题。

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

我尝试使用inkscape -D --file=filename.eps --export-plain-svg=filename.svg将我的eps文件导出为svg格式,并使用ImageSVG进行处理,效果更好。请注意:这个函数也没有完全实现,所以我不能保证它会起作用。我只测试了一个相当基本的eps文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接