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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • [项目源码]ERP进销存系统

    [项目源码]ERP进销存系统介绍ERP进销存管理系统软件架构核心框架:SpringBoot2.0.0持久层框架:Mybatis1.3.2日志管理:Log4j2.10.0JS框架:Jquery1.8.0UI框架…

    2022年5月24日
    45
  • uint和int的区别_int32和uint32

    uint和int的区别_int32和uint32本次测试的环境是Mac系统下,CPU64位。注意:go语言中的int的大小是和操作系统位数相关的;如果是32位操作系统,int类型的大小就是4字节;如果是64位操作系统,int类型的大小就是8个字节1、测试不同int类型占用字节数大小1.1、测试有符号int类型import( “testing” “unsafe” “math” “fmt”)funcTestIntSize(t*testing.T){ fmt.Println(“不同int类型占用的字节数大小:”)

    2022年8月15日
    5
  • 打开windows xp的默认共享

    XP打开默认共享$先在控制面板的“服务”,看SERVER服务是否启动,如果没有启动,则将设置为自动或者手动,然后再选择启动。开启系统的默认共享的方法1.检查AutoShareServer和AutoShareWks注册表值是否为0。2.找到注册表中的HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/LanmanServer/Para

    2022年4月16日
    67
  • verilog和vhdl区别大吗_verilog hdl和vhdl的区别

    verilog和vhdl区别大吗_verilog hdl和vhdl的区别这两种语言都是用于数字电路系统设计的硬件描述语言,而且都已经是IEEE的标准。VHDL1987年成为标准,而Verilog是1995年才成为标准的。这是因为VHDL是美国军方组织开发的,而Verilog是由一个公司的私有财产转化而来。为什么Verilog能成为IEEE标准呢?它一定有其独特的优越性才行,所以说Verilog有更强的生命力这两者有其共同的特点:能形式化地抽象表示电路的行为和结构;支持逻辑设计中层次与范围地描述;可借用高级语言地精巧结构来简化电路行为和结构;支持电路描述由高层到低层

    2022年9月21日
    2
  • MySQL binlog日志格式 binlog_format[通俗易懂]

    MySQL binlog日志格式 binlog_format[通俗易懂]MySQLbinlog日志格式binlog_formatMySQL5.5中对于二进制日志(binlog)有3种不同的格式可选:Mixed,Statement,Row,默认格式是Statement。总结一下这三种格式日志的优缺点。MySQLReplication复制可以是基于一条语句(StatementLevel),也可以是基于一条记录(RowLevel),可以…

    2022年5月31日
    34
  • 上传图片到七牛云并返回图片URL_前端通过url直接获取图片

    上传图片到七牛云并返回图片URL_前端通过url直接获取图片在开发项目的时候,经常会用到上传图片的功能,如果把图片全都存放在项目路径下,会导致项目越来越臃肿,因此可以考虑把图片上传交给第三方处理,此处我们采用七牛云进行图片存储。一.七牛云准备工作1.七牛云注册登录https://portal.qiniu.com/signup/choice2.新建存储空间进入对象存储菜单,点击“新建存储空间”,这里需要实名认证,上传身份证正反…

    2022年9月22日
    2

发表回复

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

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