1

我有一个具有给定页面顺序的 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()必须更改步骤。

我认为这是一个很大的问题,我很惊讶这是多么复杂和令人兴奋!任何帮助是极大的赞赏..

4

1 回答 1

0

我不会分散您对 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
于 2019-01-31T00:44:10.850 回答