我有一个具有给定页面顺序的 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
然后与第19页至第 36页相同, 然后再次从第37页至第54页
我使用 Python 包 PyPDF2 进行了尝试,并设法将example.pdf的每一页输出为example_page- * .pdf,因此第 1 页现在称为example_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()
必须更改步骤。
我认为这是一个很大的问题,我很惊讶这是多么复杂和令人兴奋!任何帮助是极大的赞赏..