我有一个72.9MB的PDF文件,我需要把它缩减到500KB以下。
该文件是一个JPEG图像,我已经扫描了,然后转换为PDF。
这里有一个脚本,用于改写扫描的pdf文件。
#!/bin/sh
gs -q -dNOPAUSE -dBATCH -dSAFER \
-sDEVICE=pdfwrite \
-dCompatibilityLevel=1.3 \
-dPDFSETTINGS=/screen \
-dEmbedAllFonts=true \
-dSubsetFonts=true \
-dColorImageDownsampleType=/Bicubic \
-dColorImageResolution=72 \
-dGrayImageDownsampleType=/Bicubic \
-dGrayImageResolution=72 \
-dMonoImageDownsampleType=/Bicubic \
-dMonoImageResolution=72 \
-sOutputFile=out.pdf \
$1
你可以对它进行一些定制,使其更容易重复使用,但如果你只有一个pdf,你可以用你的pdf文件名替换$1
,然后把它放在终端。
我通常用ps2pdf来做这件事(语法更简单),像这样。
ps2pdf -dPDFSETTINGS=/ebook BiggerPdf SmallerPDF
我使用下面的python脚本来减少生产服务器(8.04)中一个目录下所有pdf文件的大小。所以它应该是有效的。
#!/usr/bin/python
import os
for fich in os.listdir('.'):
if fich[-3:]=="pdf":
os.system("ps2pdf -dPDFSETTINGS=/ebook %s reduc/%s" % (fich,fich))
如果转换为djvu也可以,如果不涉及颜色,你可以尝试以下方法。
用pdfimages -j
将pdf转换成jpg文件
如果你得到的是pbm文件,你应该做中间的步骤。
for FILENAME in $(ls *.pbm); do convert $FILENAME ${FILENAME%.*}.jpg ; done
。
转换命令来自imagemagick软件包。
然后用scantailor来制作tif's出来。
最后一步,你进入scantailor的输出目录(tif's所在的位置),并对该目录应用djvubind。
这应该会大大减少文件大小,而不会对文本有很大的质量损失。如果你想对OCR后端进行更精细的控制,你可以尝试djvubind --no-ocr
,然后用ocrodjvu来添加OCR层。
如果你的文件中有颜色,事情就变得有点复杂了。你可以使用djvubind,而不是didjvu,在scantailor中,你必须改变为混合模式,有时要手动选择彩色图像。