我处理大量相当大的图像文档,每个文件的数据量从几字节到几千兆不等。我需要这些文档占用更少的存储空间,尤其是更便于携带和传输。
对于单个文档,我一直在使用:
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
:选择适用于多种用途的输出,但可能以更大的输出文件为代价。