按照给定的(邪恶的)序列重新组织PDF页面——PyPDF2的尝试



我有一个PDF文档,具有给定的页面顺序(假设1是第1页,2是第2页)

因此在开始时页面顺序是正常的,

1,2,3,4,5,6,7,8,9…

但现在我需要以一种邪恶的方式重新排列PDF文档中的页面来打印它-->我必须将页面的顺序更改为必要的顺序:

1,2,3,7,8,9,13,14,15,4,5,6,10,11,12,16,17,18

然后与1936页相同然后再次从3754

我在Python包PyPDF2中尝试了一下,并成功地将example.pdf的每一页都作为example_page-*.pdf进行了分组,因此第1页现在称为sample_page-1.pdf,第65页称为example_page-65.pdf

但是,我如何才能将文档合并到必需的序列中?

我的尝试是对DZone提供的代码进行以下操作(https://dzone.com/articles/splitting-and-merging-pdfs-with-python):

import os
from PyPDF2 import PdfFileReader
from PyPDF2 import PdfFileWriter
def pdf_splitter(path):
fname = os.path.splitext(os.path.basename(path))[0]

pdf = PdfFileReader(path)
for page in range(pdf.getNumPages()):
pdf_writer = PdfFileWriter()
pdf_writer.addPage(pdf.getPage(page))

output_filename = '{}_page_{}.pdf'.format(
fname, page+1)

with open(output_filename, 'wb') as out:
pdf_writer.write(out)

print('Created: {}'.format(output_filename))

if __name__ == '__main__':
path = '/Users/timmy/Desktop/Print_Order_Problem/THE_ORDERED.pdf'
pdf_splitter(path)

合并回

import glob
from PyPDF2 import PdfFileMerger

def merger(output_path, input_paths):
pdf_merger = PdfFileMerger()
file_handles = []
for path in input_paths:
pdf_merger.append(path)
with open(output_path, 'wb') as fileobj:
pdf_merger.write(fileobj)
if __name__ == '__main__':
paths = glob.glob('THE_ORDERED_page_*.pdf')
paths.replace()
paths.sort()
merger('pdf_merger1.pdf', paths)

我希望能够按照给定的顺序合并PDF。我知道paths.sort()步骤必须更改。

我认为这是一个很大的问题,我很惊讶这是多么复杂和令人兴奋!非常感谢您的帮助。。

我不会分散你对PyPDF2实验的注意力。你的计划听起来不错。但是,作为参考,在开源平台上,非Python实用程序pdftk可以对页面进行重新排序。

一旦安装了实用程序pdftk,您就可以从命令行调用它,大致如下:

pdftk in.pdf cat 1 2 3 7 8 9 13 14 15 4 5 6 10 11 12 16 17 18 output out.pdf

最新更新