Python中通过PyPDF2实现PDF添加水印

Python中通过PyPDF2实现PDF添加水印场景PyPDF2是一个纯pythonPDF库,能够分割、合并、裁剪和转换PDF文件的页面。它还可以向PDF文件中添加自定义数据、查看选项和密码。它可以从PDF检索文本和元数据,还可以将整个文件合并在一起。PyPDF21.26.0文档:https://pythonhosted.org/PyPDF2/实现使用pip安装pypddf2新建文件夹waterPDF在…

大家好,又见面了,我是你们的朋友全栈君。

场景

PyPDF 2是一个纯python PDF库,能够分割、合并、裁剪和转换PDF文件的页面。它还可以向PDF文件中添加自定义数据、查看选项和密码。它可以从PDF检索文本和元数据,还可以将整个文件合并在一起。

PyPDF 2 1.26.0文档:

https://pythonhosted.org/PyPDF2/

实现

使用pip 安装pypddf2

Python中通过PyPDF2实现PDF添加水印Python中通过PyPDF2实现PDF添加水印

新建文件夹waterPDF

在此文件下新建1.pdf用于添加水印

Python中通过PyPDF2实现PDF添加水印Python中通过PyPDF2实现PDF添加水印

再新建watermark.pdf作为要添加的水印的内容

Python中通过PyPDF2实现PDF添加水印Python中通过PyPDF2实现PDF添加水印

再新建waterPDF.py

from PyPDF2 import PdfFileWriter, PdfFileReader

def create_watermark(input_pdf, output, watermark):
    watermark_obj = PdfFileReader(watermark)
    watermark_page = watermark_obj.getPage(0)

    pdf_reader = PdfFileReader(input_pdf)
    pdf_writer = PdfFileWriter()

    # 给所有页面添加水印
    for page in range(pdf_reader.getNumPages()):
        page = pdf_reader.getPage(page)
        page.mergePage(watermark_page)
        pdf_writer.addPage(page)

    with open(output, 'wb') as out:
        pdf_writer.write(out)

if __name__ == '__main__':
    create_watermark(
        input_pdf='1.pdf',
          output='watermarked.pdf',
        watermark='watermark.pdf')

运行效果

Python中通过PyPDF2实现PDF添加水印Python中通过PyPDF2实现PDF添加水印

此时会在文件夹下生成watermarked.pdf

Python中通过PyPDF2实现PDF添加水印Python中通过PyPDF2实现PDF添加水印

 

资源以及代码下载

https://download.csdn.net/download/badao_liumang_qizhi/11146333

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152370.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue学习笔记(二)——字符组件传值「建议收藏」

    vue学习笔记(二)——字符组件传值「建议收藏」1、子组件向父组件传值、vue中splice和$emit使用:https://blog.csdn.net/BlackPlus28/article/details/100136811<body> <div id=”app”> <!– v-model 数据双向绑定 –> …

    2022年6月13日
    25
  • SilverlightQQ体验报告…

    SilverlightQQ体验报告…显示风格…太华丽了..风格2MacOS的滑动效果..太暴力了 另外一种显示风格.. 嘛是起飞??? 好友搜索 

    2022年7月17日
    15
  • NIO Reactor模型

    NIO Reactor模型NIOReactor模型Reactor三种模型单线程模型多线程模型主从多线程模型Netty线程模型1线程组2ChannelPipeline3异步非阻塞Reactor模式是基于事件驱动开发的,服务端程序处理传入多路请求,并将它们同步分派给请求对应的处理线程,Reactor模式也叫Dispatcher模式,即I/O多路复用统一监听事件,收到事件后分发(Dispatch给某进程),这是编写高性能网络服务器的必备技术之一。Reactor模式以NIO为底层支持,核心组成部分包括Reactor和Ha

    2025年6月6日
    0
  • java.lang.ClassNotFoundException: okio.ForwardingTimeout 已解决

    java.lang.ClassNotFoundException: okio.ForwardingTimeout 已解决这个问题发现是由于版本问题引起的,下面是我用的两个jar源码对比:先看看okio-1.13.0.jar的,会发现在forwardingSource下面有ForwardingTimeout这个类下面是okio-2.0.0.jar包,会发现那个ForwardingTimeout没了,不知道官方改成什么了我用okhttp-3.8.0.jar引用okio-2.0.0.jar的时候就会…

    2022年5月29日
    103
  • Mysql插入数据报错java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x98\x8D\xE8\xBE…'[通俗易懂]

    Mysql插入数据报错java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x98\x8D\xE8\xBE…'[通俗易懂]前几日在项目中遇到数据库插入数据报错java.sql.SQLException:Incorrectstringvalue:’\xF0\x9F\x98\x8D\xE8\xBE…’forcolumn’title’atrow1一直以为是中文字符编码不对,然后找了各种编码的东西。后来无意中发现了一篇文章:http://blog.csdn.net/fuxuejun/a

    2022年5月20日
    30
  • 【图像超分辨】RDN

    【图像超分辨】RDNRDN网络结构实现细节讨论(与其他网络的区别)实验设置实验结果参考博客RDN——ResidualDenseNetwork——残差深度网络。RDN是基于深度学习的超分方法之一,发表于CVPR2018。网络结构RDN网络结构分为4个部分:SFENet(ShallowFeatureExtractionNet,浅层特征提取网络);RDBs(ResidualDenseBl…

    2022年6月18日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号