一、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>]
參考:linux-優化pdf
參考資訊:Linux下pdf的編輯
沒有留言:
張貼留言