繁体   English   中英

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

[英]How to Merge two pages from a pdf file as one page

我有一个 pdf,其中共有 6 页图像。我想将第 1 页和第 2 页合并为一个 pdf,依此类推,共 3 到 6 页。

我将所有 6 页 pdf 拆分为单独的 pdf。

从 PyPDF2 导入 o​​s 导入 PdfFileReader、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))

如果名称== '':路径 = 'D:\Tasks\Samples\fw9.pdf' pdf_splitter(path)

我想知道如何将 fw9 的第 1 页和第 2 页合并为单个 pdf 文件,该文件仅包含 1 页,其中半页作为 fw9 pdf 文件的第 1 页,另一半作为 fw9 pdf 的第 2 页。我必须为所有人执行此操作6 页作为 1-2 作为 1 个 pdf,其中 1 页,3-4 页作为另一个 pdf,其中只有 1 页,两者都在同一页上,依此类推。如果有人知道如何这样做,请提供帮助。

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

这里的示例中,您可以创建一个 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,但我不确定你是否想要它。

from PyPDF2 import PdfFileReader, PdfFileWriter
from PyPDF2 import PageObject

#Open the files that have to be merged
pdf1File = open('document.pdf', 'rb')

#Read the files that you have opened
pdf1Reader = PdfFileReader(pdf1File)

#Make a list of all pages
pages = []
for pageNum in range(pdf1Reader.numPages):
    pageObj = pdf1Reader.getPage(pageNum)
    pages.append(pageObj)

#Calculate width and height for final output page
width = pages[0].mediaBox.getWidth() * 6
height = pages[0].mediaBox.getHeight() + 100

#Create blank page to merge all pages in one page
merged_page = PageObject.createBlankPage(None, width, height)

#Loop through all pages and merge / add them to blank page
x = 0
for page in pages:
    merged_page.mergeScaledTranslatedPage(page, 1, x, 10)
    x = float(x) + float(page.mediaBox.getWidth())

#Create final file with one page
writer = PdfFileWriter()
writer.addPage(merged_page)

with open('out.pdf', 'wb') as f:
    writer.write(f)

我想合并 6 个文件/页面,所以我使用 6 作为页面宽度的乘数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM