如何从终端压缩(一次多个)PDF文件

如何从终端压缩(一次多个)PDF文件

我处理大量相当大的图像文档,每个文件的数据量从几字节到几千兆不等。我需要这些文档占用更少的存储空间,尤其是更便于携带和传输。

对于单个文档,我一直在使用:

ps2pdf -dPDFSETTINGS=/ebook inputfile.pdf outputfile.pdf

我在 AskUbuntu 上找到了哪些代码,它可以很好地处理单个文件,压缩率约为 1 到 0.42,从而使输出文件的大小不到原始文件的一半,同时保持可接受的阅读质量水平。

我现在想将此代码用于我的 pdf 文档库,以便使用来自终端的单个命令转换我之前的所有 pdf 文件。我的战略目标是避免必须单独压缩每个单独的 pdf 文件;我想输入一行代码,按回车键,然后去做其他有意义的事情,回来后发现已经完成了,我希望对文件进行 mogrify(而不是转换它们,这会产生每个文件的两倍),以避免必须删除旧文件。

所有这些文件都位于一个文件夹中。

有什么建议么?

先感谢您!

答案1

您可以使用相同的命令或mogrify如您所说,只需添加一点点bash

find $HOME/PDF_Lib -iname '*.pdf' | while read pdf; do ps2pdf -dPDFSETTINGS=/ebook "$pdf" "${pdf:0:(-4)}_new.pdf"; done

或者

find $HOME/PDF_Lib -iname '*.pdf' | while read pdf; do mogrify -resample 150 -compress JPEG -quality 80 "$pdf"; done

答案2

在 PDF 目录中创建 sh 文件并添加以下行:

脚本

for f in *.pdf
do
    echo $f;
    convert -compress Zip $f  a$f;
done

现在在 PDF FILES 目录中打开你的终端:

$ chmod +x script.sh
$ ./script.sh

现在此脚本将压缩目录中的每个 PDF 文件

答案3

我在 iOS 终端上成功使用了以下代码以递归方式压缩多个 PDF。我发布它是因为我找不到可以通过简单的复制和粘贴来工作的东西。

find . -name '*.pdf' | while read pdf; do gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile="${pdf}_new.pdf" "$pdf"; done

请注意,您可能需要不同的输出质量,因此您可以-dPDFSETTINGS按如下方式更改参数:

-dPDFSETTINGS=/screen:质量较低,尺寸较小。
-dPDFSETTINGS=/ebook:质量较好,但 PDF 稍大一些。
-dPDFSETTINGS=/prepress:输出类似于 Acrobat Distiller 的“印前优化”设置。
-dPDFSETTINGS=/printer:选择类似于 Acrobat Distiller 的“打印优化”设置的输出。
-dPDFSETTINGS=/default:选择适用于多种用途的输出,但可能以更大的输出文件为代价。

相关内容