Python 3.5:通过for循环应用PDF水印

时间:2017-09-27 18:04:38

标签: python-3.x

我正在阅读这本书“用Python自动化无聊的东西”#39;我试图在所有页面上运行代码以水印.pdf,但水印仅出现在第一页上。

所以问题必须在循环中或在写作中。任何人都可以帮我搞清楚吗?谢谢

在Windows 7计算机上运行Python 3.5.0。

以下代码:

import PyPDF2
minutesFile = open('meetingminutes.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(minutesFile)
minutesFirstPage = pdfReader.getPage(0)
pdfWatermarkReader = PyPDF2.PdfFileReader(open('watermark.pdf', 'rb'))
minutesFirstPage.mergePage(pdfWatermarkReader.getPage(0))
pdfWriter = PyPDF2.PdfFileWriter()
pdfWriter.addPage(minutesFirstPage)

for pageNum in range(1, pdfReader.numPages):
       pageObj = pdfReader.getPage(pageNum)
       pdfWriter.addPage(pageObj)
resultPdfFile = open('watermarkedCover.pdf', 'wb')
pdfWriter.write(resultPdfFile)
minutesFile.close()
resultPdfFile.close()

2 个答案:

答案 0 :(得分:1)

import PyPDF2

template = PyPDF2.PdfFileReader(open('yourfilw.pdf', 'rb'))
watermark = PyPDF2.PdfFileReader(open('watermarkfile.pdf', 'rb'))
output = PyPDF2.PdfFileWriter()
for i in range(template.getNumPages()):
    page = template.getPage(i)
    page.mergePage(watermark.getPage(0))
    output.addPage(page)

with open('water_marked.pdf', 'wb') as file:
    output.write(file)

答案 1 :(得分:0)

"水印只出现在第一页"不是一个错误,它正是这个代码的目的所在。我看到没有尝试修改代码以将水印添加到每个页面。要诚实地了解情况以及你为改变它所做的努力,即使"无"。

这是我为每个页面添加水印代码的返工:

import PyPDF2

watermarkFile = open('watermark.pdf', 'rb')
pdfWatermarkReader = PyPDF2.PdfFileReader(watermarkFile)

minutesFile = open('meetingminutes.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(minutesFile)

pdfWriter = PyPDF2.PdfFileWriter()

for pageNum in range(pdfReader.numPages):
    pageObj = pdfReader.getPage(pageNum)
    pageObj.mergePage(pdfWatermarkReader.getPage(0))
    pdfWriter.addPage(pageObj)

resultPdfFile = open('watermarkedCover.pdf', 'wb')
pdfWriter.write(resultPdfFile)

watermarkFile.close()
minutesFile.close()
resultPdfFile.close()

尝试一下,看看它是否符合您的要求。