如何将pdf文件中的两页合并为一个pag

2024-07-02 13:25:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pdf,其中有6页的图像。我想合并为一个单独的pdf页1和2页等3到6页。在

我把所有6页的pdf文件分割成单独的pdf文件。在

导入操作系统 从PyPDF2导入PdfFileReader,PdfFileWriter

def pdf_拆分器(路径): fname=os.path.splitext操作系统(os.path.basename(路径))[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))

如果名称='main': 路径='D:\Tasks\Samples\fw9.pdf' pdf拆分器(路径)

我想知道如何将fw9的第1页和第2页合并为单个pdf文件,该文件只包含1页,其中半页作为fw9 pdf文件的第1页,另一半作为fw9 pdf的第2页。我必须将所有6页合并为1-2页的1 pdf和1页,3-4页作为另一个pdf,只有1页,两者都在同一页上,等等好吧。好心如果有人知道怎么做的话,请帮忙。在


Tags: 文件path路径formatoutputpdfospage
1条回答
网友
1楼 · 发布于 2024-07-02 13:25:38

pyPDF2库还有一个PdfFileMerger对象,它应该完全符合您的需要。在

从示例here开始,您可以创建一个PdfFileMerger,读取两个页面并将它们放入一个单独的文件中。在

我稍微修改了你的脚本,创建了0-1、2-3、4-5页的ecc文件。。(当然第0页是第一页,但python编号从0开始)

import os
from PyPDF2 import PdfFileReader, PdfFileWriter, PdfFileMerger

def pdf_splitter(path): 

    fname = os.path.splitext(os.path.basename(path))[0]

    pdf = PdfFileReader(path)
    input_paths = []
    for page in range(pdf.getNumPages()):
        pdf_writer = PdfFileWriter()
        pdf_writer.addPage(pdf.getPage(page))
        output_filename = '{}_page_{}.pdf'.format(fname, page+1)
        input_paths.append(output_filename)
        with open(output_filename, 'wb') as out:
            pdf_writer.write(out)

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

        # every 2 pages! 
        # Change the two if you need every other number of pages!
        if page % 2 == 1:
            pdf_merger = PdfFileMerger() #create pdfilemerger
            for path in input_paths: 
                pdf_merger.append(path) #read the single pages

            # we call it pages_N-1_N, so first would be pages_0_1!
            output_path = '{}_pages_{}_{}.pdf'.format(fname, page-1, page)
            with open(output_path, 'wb') as fileobj:
                pdf_merger.write(fileobj) # write the two pages pdf!

            input_paths = []

if __name__ == '__main__': 

    path = 'D:\Tasks\Samples\fw9.pdf' 
    pdf_splitter(path)

这是你想要的吗?在

这将首先为每个页面创建一个pdf,然后将它们合并为2到2。创建一个pdf也可以跳过,但我不确定你是否想要它。在

相关问题 更多 >