用光栅图像替换PDF中的矢量图像

Mic*_*yer 26 pdf file-conversion vector-graphics rasterizing image-conversion

是否有任何简单(可编写脚本)的方法将带有矢量图像的PDF转换为带有光栅图像的PDF?换句话说,我想用完全相同(非光栅化)的文本生成PDF,但每个矢量图像都用光栅化版本替换.

我偶尔会在我的Kindle上阅读有关技术文章的PDF文件,并且发现直接阅读PDF文件令人沮丧.值得庆幸的是,亚马逊将PDF 自动转换为Kindle格式,可以很好地回收我尝试过的大多数PDF文本部分.然而,虽然光栅图像似乎使转换过程变得很好,但矢量图像却被严重损坏.如果我可以轻松转换PDF以便所有矢量图像都被光栅化,那将会很棒.

我对任何可能的解决方案感兴趣,但基于Linux或Windows的解决方案更可取.

小智 10

我有一个类似的问题,并使用ImageMagics转换工具(http://www.imagemagick.org/script/index.php)解决了它.它带有Linux并在Windows/Cygwin或OS X上运行良好

convert -density 300 largeVectorFileFromR.pdf out.pdf

使用-density 300可以控制分辨率(作为DPI).

缺点:文本也被光栅化,我知道迈克尔不想要这个.

  • 遇到“未定义图片”错误的用户将需要安装必需的ghostscript gs依赖项。对于使用Homebrew的MacOS用户:`brew install ghostscript` (2认同)

小智 10

经过几天搜索一些解决方案,基于" 从PDF文件中删除所有文本 "和" 如何将图片添加到现有的pdf文件? "我找到了一个(丑陋)可编写脚本的解决方案:

gs -o /tmp/onlytxt.pdf -sDEVICE=pdfwrite -dFILTERVECTOR -dFILTERIMAGE $INPUT_FILE && \
gs -o /tmp/graphics.pdf -sDEVICE=pdfwrite -dFILTERTEXT $INPUT_FILE && \
convert -density $DPI -quality 100 /tmp/graphics.pdf /tmp/graphics.png && \
convert -density $DPI -quality 100 /tmp/graphics.png /tmp/graphics.pdf && \
pdftk /tmp/graphics.pdf stamp /tmp/onlytxt.pdf output $OUTPUT_FILE && \
rm /tmp/onlytxt.pdf /tmp/graphics.pdf /tmp/graphics.png
Run Code Online (Sandbox Code Playgroud)

我们有三个变量INPUT_FILE,OUTPUT_FILE和DPI.我们通过Ghostscript分割文本和图形内容,将图形图像转换为光栅图像(PNG)并使用pdftk连接两者.

我一直在成功地使用它来转换巨大的矢量图像,用于科学论文.


Mar*_*ann 2

这有点复杂,但您询问了任何可能的解决方案。此外,该解决方案不可自动化。

1)打开带有矢量图像的pdf Inkscapeselect然后使用工具(F1)选择整个图像

2)如果矢量图像由多个svg图形组成,请按Ctrl + G(对象-->组)

3)剪切分组的svg图像Ctrl + x

4)打开一个新的InkScape窗口Ctrl + n并粘贴图像Ctrl + v

5)选择文件-->导出位图(Shift + Ctrl + e),也许你想增加dpi

6) 返回到第一个 InkScape 窗口,文件 --> 导入 ( Ctrl + i) 并选择之前导出的位图

7)将位图放置到svg图像所在的位置

保存 pdf,矢量图像将替换为位图图像。