2018年3月2日 星期五

Linux(Ubuntu)中從實體書(pdf)製作電子書及txt文件合併

友人掃描了實體書(雙頁掃描)要製成電子書,我從網路上搜集了資料,最後列出了各個步驟,紀錄下來,以便日後參考:

一、建book資料夾→將掃描檔剪下貼到book中→檔名改為a-all.pdf
 
二.pdf裁切出上、下頁輸出為ppm(需測試)
 [大本書]
(1)上頁: pdftoppm  -x 60 -y 50 -W 1060 -H 710 a-all.pdf up
★建目錄 up 存所有up檔
(2)下頁: pdftoppm -x 60 -y 850 -W 1060 -H 730 a-all.pdf dn
※※※※※※※※※
  [小本書]
(1)上頁: pdftoppm -x 260 -y 150 -W 2000 -H 1500 a-all.pdf up
★建目錄 up 存所有up檔
(2)下頁: pdftoppm -x 230 -y 1920 -W 2060 -H 1500 a-all.pdf dn
【註】若加入 -jpeg 條件則會輸出jpeg圖,但輸出時間較長,檔案較大。
★★xxx

※※※※※※※※※

★若要輸出PNG檔

  則:pdftoppm -png -x 60 -y 50 -W 1060 -H 710 a-all.pdf up

★若要輸出jpeg檔

  則:pdftoppm -jpeg -x 60 -y 50 -W 1060 -H 710 a-all.pdf up

★一般內定解析度為150,若要指定解析度(如300DPI)用-r係數

  則:pdftoppm -r 300 -x 60 -y 50 -W 1060 -H 710 a-all.pdf up

 
三.改檔名,以便合併pdf時,依頁數順序合併:
(1)到up中:(合併時,1-1.ppm在1.ppm之前)
rename -v s/.ppm/-1.ppm/ *
(即在原檔名後加上 -1,合併時順序會在前面)
若橫式書本,左右頁相反,則改dn的檔名
=============
(2)在up中
rename -v s/up/dn/ *(改為檔名都是dn開頭)

★★xxx
四.Copy dn中檔案至up中,並將原a-all.pdf留下,以便合併

★★xxx
五.在up中,合併
(1)每個pdf檔60頁,傳到Google硬碟辨識用
convert dn-00*.ppm dn-01*.ppm dn-02*.ppm dn-03*.ppm dn-04*.ppm a-0004.pdf

convert dn-05*.ppm dn-06*.ppm dn-07*.ppm dn-08*.ppm dn-09*.ppm a-0509.pdf


【註】2022/12/07此轉換已失效,需執行以下2行,才能使用:
(1)
$ sudo nano /etc/ImageMagick-6/policy.xml  (或從檔案找etc)
(2)找到<policy domain="coder" rights="none" pattern="PDF" />改為<policy domain="coder" rights="read|write" pattern="PDF" />

【註】形成pdf後要打開來看看頁數是否符合
【註】辨識:在Google硬碟→右鍵→以Google文件開啟→辨識完,全選copy到純文字文件軟體
==============

(2)在up中,壓縮後(作單頁辨識用
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=a-0004new.pdf a-0004.pdf
(所得的單頁pdf比原檔小很多)
【註】形成pdf後要打開來看看總頁數是否符合

(注意:轉換成的 Google 文件,大小上限則是 50 MB。)
=============
(3)在up中,合併為全檔(作單頁校稿用
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=a-allnew.pdf a-*.pdf
(所得的單頁pdf比原檔小很多)
【註】形成pdf後要打開來看看總頁數是否符合

★★xxx
六.將辨識好的書本文字檔進行閱讀校正,貼到電子書製作軟體中,製成電子書。
七.將電子書丟入平板中以電子書閱讀軟體閱讀;檔案小又方便。

●●●●●●●●●●

八.若辨識出來的多個文字檔合併為一個文字檔

 cat 01.txt 02.txt.... > all.txt

cat *.txt > all.txt   (要先將1~9的檔名前加上0,否則順序會錯誤)

★★★★★

九.要將docx檔轉換成pdf格式:

 libreoffice --invisible --convert-to pdf *.docx

★★★★★

十.將多個pdf檔合併成一個pdf檔,且是文字檔:

pdfunite 1*.pdf out1.pdf

pdfunite *.pdf out.pdf
★★★★★
pdftk用來拆開、合併pdf檔,使用方法:
⑴將兩個PDF文檔合併為一個新的PDF:
pdftk 1.pdf 2.pdf cat output 0102.pdf
  
⑵如果合併資料夾中的所有pdf
pdftk *.pdf cat output all.pdf
  
⑶從文檔中刪除頁面,例如第5~19頁,並且必須使用-end指示文檔的結尾:
pdftk 01.pdf cat 1-4 20-end output 01-1.pdf
  
逐頁拆分PDF文檔:
pdftk 01.pdf burst

(5)提取a.pdf的奇數頁,並合併為b.pdf
pdftk a.pdf cat 1-endodd output b.pdf
  
(6)提取a.pdf的偶數頁,並合併為c.pdf
pdftk a.pdf cat 1-endeven output c.pdf
  
(7)提取a.pdf的指定頁面,並合併為d.pdf
pdftk a.pdf cat 1 3 5 7-end output d.pdf
  
(8)提取a.pdf的第1頁~第100頁,並合併為e.pdf
pdftk a.pdf cat 1-100 output e.pdf
  
(9)提取a.pdf的第100頁~末尾,並合併為f.pdf
pdftk a.pdf cat 100-end output f.pdf

●●●●●
★pdfseparate命令的使用:
⑴從01.pdf中提取10~15頁──未合併,並且檔名用001標示
pdfseparate -f 10 -l 15 01.pdf %03d.pdf
  
合併資料夾中所有pdf檔
pdfunite a-* all.pdf
♠♠♠♠♠
將 png 轉 jpg
ls -1 *.png|xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"'

將 jpg 轉 png 
ls -1 *.jpg|xargs -n 1 bash -c 'convert "$0" "${0%.jpg}.png"'
☀☀☀☀☀☀☀☀☀☀
將彩色pdf轉為黑白pdf,以便辨識
1.將 PDF 的每一頁擷取並轉為圖片
pdftoppm input.pdf AA -jpeg -rx 450 -ry 450
(rx 和 ry 各指定 x 維和 y 維的解析度,單位為 dpi,若未指定則用內定150)
pdftoppm -jpeg -r 300 -x 60 -y 50 -W 1060 -H 1710 input.pdf AA
(-r為解析度;x y 為距左、上的像素;W H為寬和高。可忽略)
pdftoppm -jpeg -r 300 a.pdf AA
  
2.將這些圖片批次用 convert 轉成黑白圖片。
for file in $(ls AA*.jpg) ; \
do convert $file -threshold 67% result-$file.jpg; \
done ;
(註:圖形檔為png,則將jpg改為png)
(-threshold 區分黑白和彩色的閾值參數(範圍為0-100%),這裡設定為67%。)
  
註:在Kbuntu 22.04LTS中該批次好像無效,只好用Xnview轉換!

3.將這些生成的圖片結合成新的 PDF:
convert *.jpg output.pdf

(以上參考:https://blog.kianting.info/2020/02/14/ti-linux-tsiong-pdf-tshai-sek-tsuan-tso-oo-peh/)

沒有留言:

張貼留言