pdf文件多合一方法

主要藉助linux系統中的已有工具pdfunite進行多份pdf文件合成

linux系統中自帶pdf處理工具,一般可以很簡單使用如下命令將兩份pdf合成一份pdf文件。

```bash
pdfunite 1.pdf 2.pdf 1_2.pdf
```

就是上面這條命令這麼簡單。

如果遇到成千上萬份pdf文件,合成一份咋辦

藉助pdfunite工具,我們可以使用shell腳本,來完成重複合成工作。比如,1萬份pdf,我們可以先分成10組1000份pdf,將每組中的1000份pdf按組合成一份pdf文件。那麼這一步之後,就只剩下10個“經過1000份合成一份的”pdf文件。

這裏使用shell腳本來實現上述合成原理。直接上腳本源碼。如下所示,該腳本,默認當前已經存在N份pdf文件。 

#!/bin/bash
#set -x
PARA=2

if [ $# -lt $PARA ];then
	echo usage:$0 [pdf list] [N] [out_name]
	exit 1
fi

LIST=$1
N=$2
n=0
n_mod=0
out_n=0
out_name=$3
#real_num=`cat $LIST | wc -l`
pdf_files=
while read line
do
	pdf_files+=" $line"
	let n=n+1
	n_mod=$((n%N))
	if [ $n_mod == 0 ];then
		#echo $pdf_files
		echo $n $out_n
		pdfunite $pdf_files $out_n.$out_name.pdf
		let out_n=out_n+1
		pdf_files=""
		#exit 1
	fi
done < $LIST

#let out_n=out_n+1
echo $out_n $n
pdfunite $pdf_files $out_n.$out_name.pdf

 具體使用方法就是:
usage:./pdf_composite.sh [pdf list] [N] [out_name]

其中,[pdf list]——指當前pdf列表,可以使用ls *.pdf > list來生成

           [N]——指一次pdfunite工具需要處理的文件數量,這裏嘗試的是1000份文件,貌似過大會有點意外問題。

           [out_name]——指中間合成文件的名字,我這裏隨便寫的com,中間文件就會0~n.com.pdf

所以命令使用起來就是:./pdf_composite.sh list 1000 com

我實踐的時候是合成的4萬份pdf和8萬份pdf,合成出來的文件,簡直不要太大,超過500MB的文件,一般的pdf閱讀器,貌似搜索多了會報內存不足,看來太大的pdf文件不容易看啊。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章