有没有办法从命令行展平.pdf图像?


19

在GIMP中,我可以导入.pdf,然后使用GUI通过在“图像”(Image)下拉菜单中选择“平面图像”(Flatten Image)将其展平(如果它是由多层构成的)。然后,我可以使用新文件名导出.pdf。

我想使它自动化。有什么办法可以通过终端吗?


1
安装imagemagick并读取man mogrify-im6,montage-im6,display-im6,stream-im6,identify-im6,import-im6,conjure-im6,composite-im6,convert-im6,animate-im6和compare-im6。
PersianGulf 2014年

Answers:


25

我在标题为:Re:Flattening PDF Files in UNIX Command Line的线程中通过Google找到了这两种方法。

方法1-使用Imagemagick的转换:
$ convert orig.pdf flattened.pdf 

注意:据报道,这种方法的质量是如此。

方法2-使用pdf2ps-> ps2pdf:
$ pdf2ps orig.pdf - | ps2pdf - flattened.pdf 

注意:据报道,此方法可保留图像质量。


1
第二个比GIMP更好的质量-谢谢!
2014年

@ACD-很高兴知道。很高兴它解决了你的问题:
SLM

2
方法1生成了非常模糊的图像,而方法2则运行良好。
Severyn Kozak 2015年

1
不幸的是,方法2不会对图像进行光栅化处理,因此,如果您试图遮挡敏感部分,则用户仍然可以打开文档并删除图层(使用Inkscape之类的东西)。但是,您可以修改方法1的分辨率:$ convert -density 150 {original,flattened}.pdf 如果需要保留磁盘空间,则可以使用-type Grayscaleor -monochrome或类似的东西。
eacousineau

1
两种方法都将光栅化pdf,尽管方法#2的分辨率更高。因此,这些方法都不令人满意。
蚂蚁

18

Ghostscript(gs)比我pdf2psconvert我都更好。质量几乎不会降低,文件大小很小。

gs -dSAFER -dBATCH -dNOPAUSE -dNOCACHE -sDEVICE=pdfwrite \
-sColorConversionStrategy=/LeaveColorUnchanged  \
-dAutoFilterColorImages=true \
-dAutoFilterGrayImages=true \
-dDownsampleMonoImages=true \
-dDownsampleGrayImages=true \
-dDownsampleColorImages=true \
-sOutputFile=document_flat.pdf document_original.pdf

此处找到:http: //zeroset.mnim.org/2015/01/07/flatten-pdfs-with-ghostscript/


此方法效果很好,不对pdf进行栅格化,并且将文本保存为文本
Ant的

2
我尝试使用此功能通过展平移除透明层,但是它对我不起作用。
mikemtnbikes

它为我更改了字体,但分辨率比其他建议的方法好得多。
STE

1

虽然convert将保持相同的文件大小,但我发现它运行缓慢。

pdf2ps ps2pdf方法更快,但是我发现它正在增加文件大小。

pdftk很不错,因为它不仅速度快,而且保留相似的文件大小。

这就是我用来批量展平目录的方法。

    function pdfflatten () {
        pdftk "$1" output "$2" flatten
    }
    export pdfflatten
    alias pdfflattenDIR='mkdir flattenedPDFs; for i in `seq $(ls *.pdf | wc -l)`; do a=`ls *.pdf | head -$i | tail -1`; pdfflatten "$a" flattenedPDFs/"$a"; done'

PDFTK扁平化并没有一个PDF内改变图像。从文档中,它“将输入的PDF的交互式表单字段(及其数据)与PDF的页面合并”
Aidan Kane,

1
需要明确的是,这种方法不会使透明层变平(如上所述)。
mikemtnbikes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.