按shell脚本

时间:2016-01-16 12:15:53

标签: shell pdf

我想使用扫描仪的ADF扫描大文档。因为它不是双面ADF,所以我无法自动扫描双面页面。所以我所做的是:

  1. 扫描奇数页。
  2. 扫描偶数页。
  3. 我得到的是一个包含此页码模式的PDF文件:

    1 3 5 2 4

    (如何)我可以使用shell脚本对PDF进行排序?有一种模式,所以应该是可能的。

1 个答案:

答案 0 :(得分:0)

这可能会让你开始。首先将所有页面提取为单独的文件。获取bash数组中的文件名。然后对数组进行排序。然后重新组合页面。

#!/bin/bash

# Extract all pages as "orig-000.png", "orig-001.png"
pdfimages -png "$1" orig

# Make array of names of pages
orig=($(ls orig-*png))

echo Extracted pages:
echo @{orig[@]}

npages=${#orig[@]}
echo Pages: $npages

# ii = input index
# oi = output index
halfway=$(echo "($npages-1)/2" | bc)
oi=0
for((ii=0;ii<npages;ii++)); do
   [[ ii -eq $halfway ]] && oi=1;
   echo $ii,$oi
   out[oi]=${orig[ii]}
   ((oi+=2))
done

echo Sorted pages:
echo ${out[@]}

# Reassemble pages like this - I am suggesting ImageMagick's "convert" but your OS may have better tools
echo convert ${out[@]} sorted.pdf

输出 - 9页PDF

Extracted pages:
orig-000.png orig-001.png orig-002.png orig-003.png orig-004.png orig-005.png orig-006.png orig-007.png orig-008.png
Pages: 9
0,0
1,2
2,4
3,6
4,1
5,3
6,5
7,7
8,9
Sorted pages:
orig-000.png orig-004.png orig-001.png orig-005.png orig-002.png orig-006.png orig-003.png orig-007.png orig-008.png
convert orig-000.png orig-004.png orig-001.png orig-005.png orig-002.png orig-006.png orig-003.png orig-007.png orig-008.png sorted.pdf