一、pdf的拆解:
1.(1)使用pdftoppm将pdf拆解为一张张ppm、jpeg、png、tiff图
# pdftoppm [options] [PDF-file] [PPM-file-prefix]
※例 pdftoppm a.pdf a (将a.pdf拆为一张张ppm图档)
※ [options]:-f 起始页 -l 终止页 -r (DPI) [png/jpeg/tiff]
(-r:内定150DPI)
※Help:pdftoppm -h
(2)一次扫2页的图,将pdf每页裁切为2页(先单页后双页)ppm
例: pdftoppm -jpeg -x 60 -y 80 -W 640 -H 360 input.pdf output
(裁切一个宽度为 640 像素、高度为 360 像素的区域,此区域距离左边界 60 像素、距离上边界 80 像素)
例:单页:pdftoppm -x 200 -y 130 -W 2050 -H 700 abc.pdf up
双页:pdftoppm -x 230 -y 1550 -W 2050 -H 700 abc.pdf dn
★注意:每本书扫描的大小可能不同,需测试(输出几页暂停[Ctrl+C])。
(安装xdotool,# xdotool getmouselocation,再求滑鼠座标差,可得到各座标大约数值)
★参考:Linux将PDF转为图片档的指令教学与范例 (说明详尽)
==============
2.(1)使用 ImageMagick 将 PDF 档拆解为一张张 JPG 图片档
例:(1)# convert input.pdf output.jpeg (预设72DPI)
(2)# convert -density 300 input.pdf -quality 90 output.jpg
(-density=dpi值;-quality=图片压缩层级)
※输出其他格式的图档,就直接更改输出档名的副档名即可(如png)。
(2)只抽取部分页面:页码从 0 开始算起
# convert -density 300 input.pdf[4] -quality 90 output.jpg(只有第5页)
# convert -density 300 input.pdf[0-2] -quality 90 output.jpg(只抽取前三页)
(3)加上 -trim 让 ImageMagick 自动把白边去除
# convert -density 300 input.pdf -quality 90 -trim output.jpg
(ImageMagick 去除白边的方法是以最角落的像素颜色为准,凡是跟最角落像素的颜色相同的边缘就自动去除,如果想要放宽判断边缘的标准,可以使用 -fuzz 来指定放宽的门槛值[-fuzz distance{%}]。)
(4)若要将转出来的图片进行裁切,可以加上 -extract 参数:
例:# convert -density 300 -extract 960x540+180+220 input.pdf output.jpg
(宽960像素、高540像素的区域;距左边界180像素、距上边界220像素)
★参考:Linux将PDF转为图片档的指令教学与范例 (说明详尽)
★参考:用ImageMagic将PDF转成高品质图
==============
3.用pdftocairo将pdf拆解为一张张jpeg或png(或压缩为另一个pdf档)
# pdftocairo [options] <PDF-file> [<output-file>]
※例:
(1)pdftocairo -jpeg a-1.pdf a-1 (将a-1.pdf拆为a-1-01.jpg、a-1-02.jpg……)
(2)pdftocairo -jpeg -f 3 -l 5 a-1.pdf a-1(将a-1.pdf分离出第3页到第5页为a-1-03.jpg、a-1-04.jpg、a-1-05.jpg)
※要看参数用法: pdftocairo -h
※拆为jpeg较快,档案较小;拆为png很慢,档案很大。
※ [options]=png/jpeg/pdf/ps/eps/svg
※参数 [-r]为解析度,内定为150PPI
参考网站:Ubuntu Manpage: pdftocairo
=============
4.使用 GhostScript 将pdf转为一张张 jpg或png
(1)将 PDF 档转为 JPG 图片档
# gs -dNOPAUSE -dBATCH -sDEVICE=jpeg -r300 -sOutputFile='page-d.jpg' fnli.pdf
(2)将 PDF 档转为支援透明度的 PNG 图片档
# gs -dNOPAUSE -dBATCH -sDEVICE=pngalpha -r300 -sOutputFile='page-d.png' fnli.pdf
★参考:Linux将PDF转为图片档的指令教学与范例
=============
5.(1)用pdfimages撷取pdf中所含有的图片(有文字有图片者可用)
# pdfimages -all input.pdf output
(预设也是会将图片储存成 ppm,而加上 -all 可以原始格式储存)
(2)# pdfimages -list input.pdf
(仅列出pdf中图片清单)
(3)若要让图片档名加上页码
# pdfimages -all -p input.pdf output
★★xxx★★xxx★★xxx
二、pdf的合併:
1.将多页ppm合併(会压缩为6/10)为一个pdf
# convert <ppm-file> <output-file>
例:convert a-0?.ppm a-1?.ppm a-0.pdf (将a-0及a-1开头的所有ppm,依档案名称顺序压缩、合併成一个pdf档)
【注】合併前若要改档名以符合顺序:
★批次改档名:
# rename s/档名的原始字串/新的档案字串/ 要变更的档案类型
例:
(1)把所有档案名称中有 xyz 的部份都改成 aaa
# rename -v s/xyz/aaa/ *
(加上 -n 先预览执行结果,确定后再执行;加上 -v 是把档案都列出来;加上 -w 来覆写现有档案)
(2)更换副档名:
例:把 .html 置换成 .txt,其它不变。
# rename -v s/\.html$/\.txt/ *html
参考:Ubuntu用指令大量更改档案名称
==============
2.若不压缩,将两个以上pdf合併成一个pdf
(1)安装pdftk: # sudo aptitude install pdftk
(2)pdftk <1.pdf> <2.pdf>……cat output <output-file>
(3)例:
㊀pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf (1、2、3三个pdf合成一个pdf)
㊁pdftk *.pdf cat output all.pdf (目录内所有pdf合成一个pdf)
==============
3.将一个pdf中的某几页分离出来合併成一个pdf
# pdftk A=a.pdf cat A3-5 output dd.pdf (将a.pdf中取第3到5页合成一个dd.pdf)
#例:pdftk A=a-all.pdf cat A1-5 output 0105.pdf (将a-all.pdf中取第1到5页合成一个0105.pdf)
==============
4.在不同pdf档中取出各页并合併成一个pdf
# pdftk A=a0.pdf B=a1.pdf cat A1-2 B1-3 A8 output ABC.pdf (在a0中取1~2页,在a1中取1~3页,在a0中取第8页;将以上各页依序合併成ABC.pdf)
★★xxx★★xxx★★xxx
三、pdf的压缩+合併
1.用Ghostscript(若出现未安装,可到synaptic安装)
# gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
※-dPDFSETTINGS 变数有四种:(原始档105.4Mb)
(1)/screen (档案最小(6.3Mb)[和/ebook同][72dpi],压缩时间长,最不清楚)
(2)/ebook (档案最小(6.3Mb)[和/screen同],压缩时间长,最不清楚)
(3)/printer (档案第二大(10.2Mb),压缩时间最短,第二清楚) --首选
(4)/prepress (默认;档案最大(18.1Mb),压缩时间第二长,最清楚)
※若不用[-dPDFSETTINGS]参数,可用以下代替:(自行测试)
-dDownsampleColorImages=true \
-dDownsampleGrayImages=true \
-dDownsampleMonoImages=true \
-dColorImageResolution=72 \
-dGrayImageResolution=72 \
-dMonoImageResolution=72 \
※※※※※※
★例:若要将多个pdf压缩并合併为一个pdf档,则可如下:
# gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=a-012T.pdf a-0.pdf a-1.pdf a-2.pdf (将a-0、a-1、a-2pdf档压缩并合併为较小档案a-012T.pdf)
=============
2.将多页ppm压缩(6/10))并合併为一个pdf
# convert <ppm-file> <output-file>
※例:convert a-0*.ppm a-1*.ppm a-0.pdf (将a-0及a-1开头的所有ppm,依档案名称顺序压缩、合併成一个pdf档)
=============
3.将pdf压缩为另一个pdf档
# pdftocairo -pdf <PDF-file> [<output-file>]