辛苦制作的PDF文档被人随意传播?教你用Python给PDF打上水印!



公众号后台回复“图书“,了解更多号主新书内容
     作者:xiaoyi
     来源:小一的学习笔记

不知道你有没有这样的经历:自己辛辛苦苦、通宵熬夜做的 PDF 文档被别人随意拿来传播,更有甚者被用来卖钱。

我们都说传播无罪,但是做这种事的人,你的良心不会痛吗?

今天就来说说如何保护自己的权益,保护自己费尽心血的 PDF 文档。


其实有一个很简单的方法,就是 PDF 水印

图片批量加水印!三步轻松搞定! 的方法很类似,PDF 文档加水印也只需要简单的三步即可完成。

另外,本次的 PDF 文档选择文章 一键爬取基金历年季度报数据!附源码 中爬取到的基金报告,该报告一共 46 页。

ok,下面直接开始!


生成水印PDF

首先,生成一个带有水印的 PDF 文件作为底图。

最简单的方式就是生成一张空白图片,在图片上添加水印,然后将水印图片插入到 word 中,最后保存成 PDF 文件即可。

而在图片上添加水印,甚至自定义水印内容、颜色、大小、透明度等操作,在  图片批量加水印!三步轻松搞定!  一文中已经详细介绍过,直接运行一遍代码即可

根据 PDF 文件定义图片的尺寸,一般都是A4纸大小:29.7×21厘米

生成的水印图片如下:


添加水印

涉及到 PDF 文档的读取,写入操作,所以本小节需要先安装 PyPDF2

安装方式比较简单:

pip install PyPDF2
关于 PyPDF2 这个包详细的内容可以阅读官网:https://pythonhosted.org/PyPDF2/

添加水印的逻辑就是将每一页的 PDF 文档合并到水印 PDF 上,形成一页新的内容

对于每一页 PDF 都进行同样的合并操作,最终添加到 PdfFileWriter 中即可

相应的核心代码如下:

for page_index in range(pdf_reader.getNumPages()):
    current_page = pdf_reader.getPage(page_index)
    # 复制水印PDF
    new_page = copy(watermark_page)
    # 核心代码
    new_page.mergePage(current_page)
    pdf_writer.addPage(new_page)

这里有一个小细节,完整的 PDF 第一页都是封面,封面一般来说都是不添加水印的

所以,代码可以这样设置:

for page_index in range(pdf_reader.getNumPages()):
    current_page = pdf_reader.getPage(page_index)
    # 封面页不添加水印
    if page_index == 0:
        new_page = current_page
    else:
        new_page = copy(watermark_page)
        new_page.mergePage(current_page)
    pdf_writer.addPage(new_page)

3. 保存水印 PDF

最后一步就比较简单,直接将对应的 PdfFileWriter 输出成 文件即可

对应的代码就一行:

# 保存水印后的文件
with open(save_filepath, "wb") as out:
    pdf_writer.write(out)

最后看一下效果吧:

对于文字和表格内容,水印都可以在其下方成功显示,而文中的图片也可以正常显示,不会被水印遮挡

搞定!

代码内容比较少,直接贴在文末供大家参考学习,代码如下:

import os
from copy import copy
from PyPDF2 import PdfFileReader, PdfFileWriter

if __name__ == '__main__':
    dirpath = 'pdf_file'
    filename = '易方达中小盘混合型证券投资基金2020年中期报告'
    filepath = os.path.join(dirpath, filename+'.pdf')
    """添加水印"""
    watermark_filepath = os.path.join(dirpath, 'watermark.pdf')
    save_filepath = os.path.join(dirpath, filename+'【带水印】.pdf')
    """读取PDF水印文件"""
    # 可以先生成一个空白A4大小的png图片,通过 https://mp.weixin.qq.com/s/_oJA6lbsdMlRRsBf6DPxsg 教程的方式给图片加水印,将图片插入到word中并最终生成一个水印PDF文档
    watermark = PdfFileReader(watermark_filepath)
    watermark_page = watermark.getPage(0)

    pdf_reader = PdfFileReader(filepath)
    pdf_writer = PdfFileWriter()

    for page_index in range(pdf_reader.getNumPages()):
        current_page = pdf_reader.getPage(page_index)
        # 封面页不添加水印
        if page_index == 0:
            new_page = current_page
        else:
            new_page = copy(watermark_page)
            new_page.mergePage(current_page)
        pdf_writer.addPage(new_page)
    # 保存水印后的文件
    with open(save_filepath, "wb") as out:
        pdf_writer.write(out)

以上就是本节的全部内容,关于PDF 的操作后续会持续分享。

包括:拆分、合并、加密、解密、转换等,基本都是在工作上会用到的,希望在保护大家权益的同时,也希望能够对大家有所帮助。

◆ ◆ ◆  ◆ ◆
麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:


数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码:
猜你喜欢
● 卧槽!原来爬取B站弹幕这么简单● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值