如何从命令行减小pdf文件的大小

如何从命令行减小pdf文件的大小

我知道这个问题已在其他线程中得到回答,但没有一个解决方案对我有用。我有一个 pdf 文件,其中包含 4 个图,其中有数百万个彩色点(曼哈顿图)。 PDF 文件太大(约 100 MB),我什至无法在计算机上正确打开它。我尝试过gs类似的命令

gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -q -o output.pdf manhattan_plots_long.pdf

但它似乎不起作用,我收到一条错误消息,显示“无法将颜色空间转换为 sRGB,将策略恢复为 LeaveColorUnchanged”。

我可以找到另一个代码来修复此错误,但新的 PDF 文件具有相同的大小!

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH \
  -dAutoRotatePages=/None -dUseCIEColor -sOutputFile=output.pdf input.pdf

我不明白出了什么问题。我的问题有什么解决办法吗?

答案1

尝试添加-r150到第二个命令,所以

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH \ -dAutoRotatePages=/None -dUseCIEColor -r150 -sOutputFile=output.pdf input.pdf

您可以使用小于 150 的数字来降低图像 DPI。

另一个有帮助的选择是-dCompressFonts=true

答案2

由于我没有看到该文件,我只能猜测您有一份非常详细的文档,用于高质量打印(例如大型海报)。这些图形很可能是 Ghostscript 想要保存的矢量图形。按照 @Academiphile 的建议,将文档的各个页面在屏幕外渲染为足够低分辨率的光栅图像:

ghostscript -dNOPAUSE -dBATCH -sDEVICE=tiffgray -sOutputFile=output.tif input.pdf

生成的多页 tif 将会很大,但您可以继续使用您选择的查看器查看图像。请不要尝试对该文件执行任何其他操作(例如编辑并打印 - 打印机操作员会愤怒和/或遭受精神崩溃)。

答案3

我在寻找创建某种别名的解决方案时发现了该线程,我可以在执行命令之前修改命令(例如填充)或使用带参数的别名。我最终为它创建了一个函数,我认为它可以帮助其他人寻找类似的解决方案。您可以直接将这些类型的函数插入到 .bashrc 文件中。

## Function to compress PDF
compress-high() {
    # compress pdf $2 into $1 using minimizing size
    gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=$1 $2
}

这个具体示例用于ghostscript压缩 pdf,$1 是第一个参数,代表压缩 pdf 的名称,$ 是第二个参数,代表要压缩的输入 pdf 的名称。这可以很容易地适应其他用途。

相关内容