尝试使用PyPDF2进行“水印”处理时,为什么此代码无法按“预期”方式工作?

时间:2019-01-05 17:52:07

标签: python-3.x pypdf2

我正在合并PDF页面(水印样式),以使原始的基本pdf轮廓填充有另一个pdf的文本。

基本pdf是提供标题的一页。 pdf文本是两页pdf,在第1页上有文本,在第2页上有文本。

我正在尝试生成两个页面的pdf输出,该输出在每个页面上具有基本页眉,并在原始文本pdf的每个页面中具有对应的文本。

但是,当执行下面的代码时,结果是两页pdf,每页都有标题,而结果pdf的两页中的每一页都是两页文本。

# file1 # Pdf file - text of two pages
# file2 # Pdf file - base header of one page
# fileO # Output file

from PyPDF2 import PdfFileWriter, PdfFileReader

textpdf = PdfFileReader(open(file1,'rb')) # Reads the text PDF into PyPDF2
basepdf = PdfFileReader(open(file2,'rb')) # Reads the base PDF into PyPDF2
output = PdfFileWriter() # Creates the ouput object in PyPDF2
num_pages = textpdf.getNumPages() # The number of pages in the text file

for page in range(num_pages):
    basepdf_page = basepdf.getPage(0)
    basepdf_page.mergePage(textpdf.getPage(page))
    output.addPage(basepdf_page)    

outputpdf = open(fileO,'wb')
output.write(outputpdf)
outputpdf.close()

我尝试放置以下代码行:

basepdf_page = basepdf.getPage(0)

在for循环之上,但这不会改变任何内容。

我还尝试了另一种方法,将基本头文件写到文本文件的每个页面上,但是这样做的问题是基本头文件的空白基本上会覆盖文本。这样一来,至少文本会覆盖基本头文件的空白。

如果需要更多信息,请告诉我。同时,我将继续寻找解决方案!

谢谢!


更新:如果每次通过将实例化该对象的代码移动到for循环中来每次刷新basepdf对象,它都将按预期方式工作,因此我已解决了该问题,但我仍然想了解为什么这样做第一次无法按“预期”的方式工作!

from PyPDF2 import PdfFileWriter, PdfFileReader

textpdf = PdfFileReader(open(file1,'rb')) # Reads the text PDF into PyPDF2
num_pages = textpdf.getNumPages() # The number of pages in the text file

output = PdfFileWriter() # Creates the ouput object in PyPDF2

for page in range(num_pages):
    basepdf = PdfFileReader(open(file2,'rb')) # Reads the base PDF into PyPDF2
    basepdf_page = basepdf.getPage(0)
    basepdf_page.mergePage(textpdf.getPage(page))
    output.addPage(basepdf_page)

outputpdf = open(fileO,'wb')
output.write(outputpdf)
outputpdf.close()

谢谢!

0 个答案:

没有答案