我有一个pdf,其中总共有6页图像。我想将第1页和第2页合并为一个pdf,以此类推,合并3到6页。
我将pdf的全部6页拆分为单独的pdf。
导入操作系统 从PyPDF2导入PdfFileReader,PdfFileWriter
def pdf_splitter(路径): 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(路径)
我想知道如何将fw9的第1页和第2页合并为单个pdf文件,该文件仅包含1页,其中一半的页作为fw9 pdf文件的第1页,另一半作为fw9 pdf的第2页。这对于所有6页来说都是1-2 as 1 pdf,其中1页是3-4页,而另一pdf却只有1页,并且在同一页上都以此类推。以此类推。这样。
答案 0 :(得分:0)
库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的操作,但是我不确定是否要。