【问题标题】:Watermark two pdfs - Each page of the first with each page of the second水印两个 pdf - 第一个的每一页与第二个的每一页
【发布时间】:2018-10-09 02:25:01
【问题描述】:

我有两个长度相同的 pdf 文件,比如说 pdf1.pdf 和 pdf2.pdf。我正在尝试使用 pdf2.pdf 为 pdf1.pdf 的每一页添加水印(即,pdf1.pdf 的第 1 页与 pdf2.pdf 的第 1 页,pdf1.pdf 的第 2 页与 pdf2.pdf 的第 2 页 ...) .

但是,我真的很想知道如何循环它们(我是编程新手)。

例如,我试过这个:

import PyPDF2
from PyPDF2 import PdfFileMerger
from PyPDF2 import PdfFileReader, PdfFileWriter

output = PdfFileWriter()

ipdf = PdfFileReader(open('pdf1.pdf', 'rb'))
wpdf = PdfFileReader(open('pdf2.pdf', 'rb'))
for i in xrange(wpdf.getNumPages()):
    watermark = wpdf.getPage(i)
    for i in xrange(ipdf.getNumPages()):
        page = ipdf.getPage(i)

for i in watermark:
    page.mergePage(watermark)
    output.addPage(page)

with open('newfile.pdf', 'wb') as f:
   output.write(f)

任何帮助将不胜感激:) :)

【问题讨论】:

  • 啊,我使用的是 Python 版本 2.7.14 :)

标签: python python-2.7 pdf watermark pypdf2


【解决方案1】:

您使用了太多循环,页数相同,因此您在页数上循环一次,获取水印,获取页面,将两者结合并将它们添加到输出中:

import PyPDF2
from PyPDF2 import PdfFileMerger
from PyPDF2 import PdfFileReader, PdfFileWriter

output = PdfFileWriter()

ipdf = PdfFileReader(open('pdf1.pdf', 'rb'))
wpdf = PdfFileReader(open('pdf2.pdf', 'rb'))

# same page counts - just loop once
for i in xrange(wpdf.getNumPages()):
    watermark = wpdf.getPage(i)    # get i-th watermark
    page = ipdf.getPage(i)         # get i-th page
    page.mergePage(watermark)      # marry them and add to output
    output.addPage(page)

with open('newfile.pdf', 'wb') as f:
   output.write(f)

完成。

【讨论】:

  • 非常感谢!!!你是对的,因为它们的页数相同,我只需要获取一次页数! :D
  • @Fabian 请将 python2.7 标签添加到您的问题(编辑它)除了 python 通用标签。如果您的问题得到解决,请考虑 upvoting/accepting 添加标签并美化您的问题有助于下一个弗洛里安在未来几周内更轻松地找到您对他相同问题的问题;) - 快乐编码
  • 感谢您的建议!我很想添加标签,但是,我不能(“创建新标签 'python2.7' 需要至少 1500 名声望。请尝试从现有标签列表中尝试一些东西。”)同样,upvoting 是不可能的(“感谢您的反馈!声望低于 15 人的投票会被记录下来,但不要更改公开显示的帖子得分。”),但至少接受它确实有效:) :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
  • 2019-09-30
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
相关资源
最近更新 更多