我正在寻找一系列命令来随机化现有 PDF 文档中的页面顺序。
答案1
事实证明,有一个很好的 Python 库 pyPDF,可以在以下脚本中使用它来随机化 PDF 文档中页面的顺序。
下面的脚本,称为mixpdf
,在被语句调用时,会创建一个输入 PDF 文件的副本,其中页面是随机重新排序的mixpdf myinputfile.pdf
。
#!/usr/bin/python
import sys
import random
from pyPdf import PdfFileWriter, PdfFileReader
# read input pdf and instantiate output pdf
output = PdfFileWriter()
input1 = PdfFileReader(file(sys.argv[1],"rb"))
# construct and shuffle page number list
pages = list(range(input1.getNumPages()))
random.shuffle(pages)
# display new sequence
print 'Reordering pages according to sequence:'
print pages
# add the new sequence of pages to output pdf
for page in pages:
output.addPage(input1.getPage(page))
# write the output pdf to file
outputStream = file(sys.argv[1]+'-mixed.pdf','wb')
output.write(outputStream)
outputStream.close()
答案2
为此,我建议qpdf
使用shuf
bash 脚本。
#!/usr/bin/bash
INPUT="${1}"
OUTPUT=$(basename "${INPUT}" .pdf)-rand.pdf
NPAGES=$(qpdf --show-npages "${INPUT}")
RANDOM_PERMUTATION=$(shuf -i 1-${NPAGES} | xargs | tr ' ' ',')
qpdf --empty --pages "${INPUT}" ${RANDOM_PERMUTATION} -- "${OUTPUT}"