【问题标题】:merge multiple PDF's using PyPDF2 module using for loop使用 for 循环使用 PyPDF2 模块合并多个 PDF
【发布时间】:2018-02-11 14:44:48
【问题描述】:

我是 python 新手,试图将多个作为参数传递的 pdf 合并到一个带有 PyPDF2 模块的 pdf,但结果我得到一个空的 pdf 文件 ,我的代码在下面

import os,sys,PyPDF2

pdf_write_object=PyPDF2.PdfFileWriter()

for i in sys.argv[1:]:
 file_object=open(i,'rb')
 pdf_read_object=PyPDF2.PdfFileReader(file_object)
 print('processing file : '+ i + 'number of pages : ' +  str(pdf_read_object.numPages))
 for page in range(pdf_read_object.numPages):
  pdf_write_object.addPage(pdf_read_object.getPage(page))
 file_object.close() 

final_file_object=open('final_PyPDF2.pdf','wb')
pdf_write_object.write(final_file_object)
final_file_object.close()

用with语句试过还是一样的结果

#!/usr/bin/python3

import os,sys,PyPDF2

pdf_write_object=PyPDF2.PdfFileWriter()

for i in sys.argv[1:]:
 with open(i,'rb') as file_object:
  pdf_read_object=PyPDF2.PdfFileReader(file_object)
  print('processing file : '+ i + 'number of pages : ' +  str(pdf_read_object.numPages))
  for page in range(pdf_read_object.numPages):
   pdf_write_object.addPage(pdf_read_object.getPage(page))

final_file_object=open('final_PyPDF2.pdf','wb')
pdf_write_object.write(final_file_object)
final_file_object.close()

虽然在 python 终端上对单个文件使用上述方法同样有效,但我在 for 循环中遗漏了一些东西,请有人指导。

【问题讨论】:

    标签: python-3.x for-loop pdf pdf-generation pypdf2


    【解决方案1】:

    不要打开要阅读的文件。 PdfFileReader() 可以自动完成并且代码可以工作:

    #!/usr/bin/python3
    
    import sys
    import PyPDF2
    
    pdf_write_object = PyPDF2.PdfFileWriter()
    
    for i in sys.argv[1:]:
        pdf_read_object = PyPDF2.PdfFileReader(i)
        print('processing file : '+ i + 'number of pages : ' +  str(pdf_read_object.numPages))
        for page in range(pdf_read_object.numPages):
            pdf_write_object.addPage(pdf_read_object.getPage(page))
    
    final_file_object = open('final_PyPDF2.pdf', 'wb')
    pdf_write_object.write(final_file_object)
    final_file_object.close()
    

    【讨论】:

    • 这行得通,谢谢,同时我想从我的第一个方法中删除 file_object.close() 也可以提供正确的最终文件,但不确定我的程序如何在不耗尽资源限制的情况下处理大型 pdf 现在你的方法似乎更好再次感谢。
    猜你喜欢
    • 2020-12-29
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 2021-06-21
    • 2017-04-30
    相关资源
    最近更新 更多