在Inkscape生成的PDF文件中正确嵌入JPG数据

在Inkscape生成的PDF文件中正确嵌入JPG数据,pdf,jpeg,inkscape,Pdf,Jpeg,Inkscape,在导出为PDF文件时,SVG文档中包含的JPEG图像会作为位图而不是JPEG嵌入,这是一个很好的解决方案 结果是文件大小大幅增加。例如,我有一个简单的SVG绘图,其中包括一个2MB JPEG图像;导出为PDF将生成一个14 MB的文件 我正在寻找一个解决办法。有没有办法通过插入正确编码的JPG图像(可能是通过某种pdftk技巧)来修复生成的PDF (在我的例子中,生成的PDF将作为图形包含在使用pdflatex呈现的LaTeX文档中,因此除了直接修复Inkscape生成的PDF之外,可能还有其他

在导出为PDF文件时,SVG文档中包含的JPEG图像会作为位图而不是JPEG嵌入,这是一个很好的解决方案

结果是文件大小大幅增加。例如,我有一个简单的SVG绘图,其中包括一个2MB JPEG图像;导出为PDF将生成一个14 MB的文件

我正在寻找一个解决办法。有没有办法通过插入正确编码的JPG图像(可能是通过某种pdftk技巧)来修复生成的PDF


(在我的例子中,生成的PDF将作为图形包含在使用pdflatex呈现的LaTeX文档中,因此除了直接修复Inkscape生成的PDF之外,可能还有其他解决方法。)

一个难题是使用
pdf2ps
,然后使用
ps2pdf
,这将位图数据重新编码为JPEG:

pdf2ps made-by-inkscape.pdf foo.ps
ps2pdf foo.ps smaller-file.pdf
对于我的测试用例,文件大小为:

original JPEG           2.1M
made-by-inkscape.pdf   15M
foo.ps                104M
smaller-file.pdf        1.5M

但当然,这涉及到重新编码JPEG数据,这是最好避免的。

我发现,使用Inkscape 0.48.1导出到EPS,并将生成的EPS文件传递到,可以产生良好的结果。PNG/JPG文件在PDF文件中保持PNG/JPG格式,字体看起来不错,等等。

这对我来说在Inkscape 0.48.4(Ubuntu 14.04中有库存)上效果不好。创建了一个带有305604字节JPEG的准普通SVG。导出为PDF将产生2414085字节,
pdfimages-j
提取2904016字节的PPM。导出到EPS产生28295129字节。epstopdf(在Ubuntu包texlive字体utils中)生成1223973字节的PDF
pdfimages-j
提取821634字节的JPEG。结论:已重新编码。最终在Inkscape 0.91中修复。请注意,ps2pdf可以将pdf作为输入,您不需要首先生成ps文件。