python - 水印两个 pdf - 第一个的每一页与第二个的每一页
问题描述
我有两个长度相同的 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)
任何帮助,将不胜感激 :) :)
解决方案
您使用了太多循环,页数相同,因此您在页数上循环一次,获取水印,获取页面,将两者结合并将它们添加到输出中:
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)
完毕。
推荐阅读
- github - 使用jenkins pipeline dsl构建jar并从github下载
- javascript - 设计有关处理程序的 React 组件架构的最佳方法是什么?
- java - 线程“pool-1-thread-1”中的异常 java.lang.NullPointerException:无法调用“java.util.Map.entrySet()”,因为“contextMap”为空
- azure - Azure 突触分析并行插入临时表
- javascript - 如何在对象内部声明钩子?
- spring-boot - SpringBoot/K8S/Apache CXF WS 的随机 APR/本机套接字错误
- geolocation - 如何从 Safari 网络扩展中获取用户的地理位置
- tensorflow - Tensorflow EarlyStopping 过早停止
- docker - docker-compose - 如何将 env 变量从 .env 传递到 Dockerfile?
- android - AssetLinks 文件预期流量和故障场景