我正在阅读这本书“用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()
答案 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()
尝试一下,看看它是否符合您的要求。