【问题标题】:Sort PDF pages by shell script按 shell 脚本对 PDF 页面进行排序
【发布时间】:2023-04-06 11:24:01
【问题描述】:

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

  1. 扫描奇数页。
  2. 扫描偶数页。

我得到的是一个带有这种页码模式的 PDF 文件:

1 3 5 2 4

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

【问题讨论】:

  • 我认为你问错了问题。您需要选择一个工具来操作 PDF;一种具有良好的命令行界面,而不是一种以交互方式执行所有操作的。一旦你有了它,使用什么参数应该是相当明显的,你甚至可能不需要脚本。

标签: shell pdf


【解决方案1】:

这可能会让您入门。首先将所有页面提取到单独的文件中。获取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

【讨论】:

  • 很高兴能提供帮助。如果没有提供文件,或者它只有一页等,它可能与错误检查有关。中间文件应该被删除。祝你的项目好运。
猜你喜欢
  • 2016-07-22
  • 2011-02-03
  • 1970-01-01
  • 2018-01-31
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多