最近购买了一台家用打印机MG3080
打印机只能打单页,不能打双页
需要手动换纸,比较麻烦
找了个pdf分割合并的工具
安装
windows版本
简单使用
查询页数: qpdf src.pdf --show-npages
分割: qpdf src.pdf --pages src.pdf 1,3,5,7 -- 1357.pdf
合并: qpdf --empty --pages 1.pdf 3.pdf -- 13.pdf
脚本
split_pdf.shview raw| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 
 | #!/bin/bash - 
 
 
 
 
 
 
 
 
 RED="31m"
 GREEN="32m"
 YELLOW="33m"
 BLUE="36m"
 
 
 colorEcho(){
 COLOR=$1
 echo -e "\033[${COLOR}${@:2}\033[0m"
 }
 
 colorEchoN(){
 COLOR=$1
 echo -n -e "\033[${COLOR}${@:2}\033[0m"
 }
 
 CUR_DIR=$(cd $(dirname $0); pwd)
 
 QPDF=${CUR_DIR}/qpdf-8.4.2/bin/qpdf.exe
 
 splitPdf(){
 PDF_FILE=$1
 
 if [[ "${PDF_FILE}" == "exit" ]]; then
 colorEcho $RED "exit"
 exit
 fi
 
 if [[ ! -e ${PDF_FILE} ]]; then
 colorEcho $RED "没有找到该文件"
 continue
 fi
 
 EXT=${PDF_FILE##*.}
 if [[ "${EXT}" != "pdf" && "${EXT}" != "PDF" ]]; then
 colorEcho $RED "不是pdf文件"
 continue
 fi
 
 DEST_DIR=${PDF_FILE}.d
 mkdir -p ${DEST_DIR}
 
 TotalPage=$(${QPDF} ${PDF_FILE} --show-npages)
 
 
 Page1=$(seq 1 2 $TotalPage | tac | paste -sd,)
 Page2=$(seq 2 2 $TotalPage | tac | paste -sd,)
 
 ${QPDF} ${PDF_FILE} --pages ${PDF_FILE} $Page1 -- ${DEST_DIR}/1.pdf
 ${QPDF} ${PDF_FILE} --pages ${PDF_FILE} $Page2 -- ${DEST_DIR}/2.pdf
 
 colorEcho $GREEN "分割完成,请在同名目录下查看。"
 }
 
 colorEcho $GREEN "-------------------------------------------------------------"
 colorEcho $GREEN "欢迎使用pdf分割工具"
 colorEcho $GREEN ""
 colorEcho $GREEN "该工具基于qpdf,更高级的应用请查看qpdf --help"
 colorEchoN $GREEN "该工具会将pdf文件分割成"
 colorEchoN $BLUE  "纯单页pdf(1.pdf)"
 colorEchoN $GREEN "和"
 colorEchoN $BLUE  "纯双页pdf(2.pdf)"
 colorEcho  $GREEN ""
 colorEchoN $GREEN "分割后的文建保存在"
 colorEchoN $BLUE  "pdf文件.d"
 colorEcho  $GREEN "目录下"
 colorEcho $YELLOW "运行中的warning可以忽略,不影响结果"
 colorEcho $GREEN "-------------------------------------------------------------"
 colorEcho $GREEN ""
 while true; do
 colorEchoN $GREEN "请输入pdf文件(Ctrl-c/exit-退出,直接拉文件到窗口即可):"
 read PDF_FILE
 splitPdf "$PDF_FILE"
 done
 
 | 
 
先打1.pdf
将打印完成的反过来(不需要调整顺序),再打2.pdf
问题
- 脚本即使省去了每次都要换纸的麻烦,但是还是需要在打印完成后手动调整顺序