Inkscape中存在一个错误,其中SVG文档中包含的JPEG图像在导出为PDF文件时嵌入为位图而不是JPEG.
结果是文件大小大幅增加.例如,我有一个简单的SVG绘图,其中包含一个2 MB的JPEG图像; 导出为PDF会产生14 MB的文件.
我正在寻找一种解决方法.有没有办法通过插入正确编码的JPG图像来修复生成的PDF,可能是通过某种pdftk技巧?
(在我的情况下,生成的PDF将作为图形包含在使用pdflatex呈现的LaTeX文档中,因此除了直接修复由Inkscape生成的PDF之外,可能还有其他解决方法.)
一种拼凑方法是使用pdf2ps
后跟ps2pdf
,它将把位图数据重新编码为 JPEG:
pdf2ps made-by-inkscape.pdf foo.ps
ps2pdf foo.ps smaller-file.pdf
Run Code Online (Sandbox Code Playgroud)
对于我的测试用例,文件大小为:
original JPEG 2.1M
made-by-inkscape.pdf 15M
foo.ps 104M
smaller-file.pdf 1.5M
Run Code Online (Sandbox Code Playgroud)
当然,这涉及对 JPEG 数据进行重新编码,最好避免这种情况。