批量给pdf增加水

  • 创建水印pdf文件

    from reportlab.pdfgen import canvas
    from reportlab.lib.units import cm
    from reportlab.pdfbase import pdfmetrics
    from reportlab.pdfbase.ttfonts import TTFont
    from PyPDF2 import PdfFileWriter,PdfFileReaderpdfmetrics.registerFont(TTFont('song', 'C:/Windows/Fonts/simsun.ttc'))#宋体def create_watermark(content):#默认大小为21cm*29.7cmc = canvas.Canvas('Watermark.pdf', pagesize = (30*cm, 30*cm))
    #    c.translate(10*cm, 10*cm) #移动坐标原点(坐标系左下为(0,0)))                                                                                                                             c.setFont('song',10)#设置字体为宋体,大小22号c.setFillColorRGB(0.5,0.5,0.5)#灰色                                                                                                                         c.drawString(3*cm, 28.5*cm, content)c.save()#关闭并保存pdf文件
    
  • 需要添加水印的文件

    PyPDF2.PdfFileReader(stream,strict = True,warndest = None,overwriteWarnings = True)
    

    参考自:https://blog.csdn.net/xingxtao/article/details/79056341

    初始化一个 PdfFileReader 对象,此操作可能需要一些时间,因为 PDF 流的交叉引用表被读入内存。

    参数:

    stream:File 对象或支持与 File 对象类似的标准读取和查找方法的对象,也可以是表示 PDF 文件路径的字符串。
    strict(bool): 确定是否应该警告用户所用的问题,也导致一些可纠正的问题是致命的,默认是 True
    warndest : 记录警告的目标(默认是 sys.stderr)

    PdfFileWriter

    这个类支持 PDF 文件,给出其他类生成的页面。

    def add_watermark2pdf(input_pdf,output_pdf,watermark_pdf):watermark = PdfFileReader(watermark_pdf)#读取带有水印的pdf文件watermark_page = watermark.getPage(0)#读取水印pdf的首页pdf = PdfFileReader(input_pdf,strict=False)pdf_writer = PdfFileWriter()for page in range(pdf.getNumPages()):print('正在处理第%s页'%page)pdf_page = pdf.getPage(page)#获取需要添加水印文件的pdf相应页码的内容if page < int(pdf.getNumPages()/2):if page % 2 != 0:pdf_page.mergePage(watermark_page)#将水印和添加到pdf中#将两个页面的内容流合并为一个。从两个页面维护资源引用(即字体)。此页面的mediabox / cropbox / etc不会更改。参数页面的内容流将添加到此页面内容流的末尾,这意味着它将在此页面之后或“页面顶部”绘制。pdf_writer.addPage(pdf_page)#将合并之后的pdf添加到新的pdf中else:pdf_writer.addPage(pdf_page)else:pdf_writer.addPage(pdf_page)pdfOutputFile = open(output_pdf,'wb')
    #    pdf_writer.encrypt('scb2018')#设置pdf密码pdf_writer.write(pdfOutputFile)pdfOutputFile.close()
    

    调用代码

    # -*- coding: utf-8 -*-
    """
    Created on Mon May 20 16:04:52 2019@author: innduce
    此程序用来给pdf文件添加水印
    """
    import os
    import shuiyin as sy#将上述两个代码保存为shuiyin.py文件
    path = input('请输入需要添加水印文件的路径:')
    txt = input('请输入需要添加的水印文字:')
    sy.create_watermark(txt)
    filename = os.listdir(path)
    i = 0
    for file in filename:if file[-4:] == '.pdf':#仅处理文件夹下后缀名为pdf的文档if file != 'Watermark.pdf':i += 1print('********处理第%s个文件中********'%i)sy.add_watermark2pdf(path + '\\'+ file,file + '新.pdf','Watermark.pdf')

批量给pdf增加水印相关推荐

  1. python pdf删除图片_【原创】python批量删除pdf图片水印(Xobject)的一种方法

    1.说明: 下载到的pdf总会有一些水印,pdf文件水印添加方式除了acrobat adobe自带的以外,还有很多,所以去除水印方法也很多,这里介绍的也只是一种适用python批量删除图片水印Xobj ...

  2. 怎么批量给PDF加水印?

    如何批量给PDF加水印?随着pdf文件格式的广泛应用,学习一些关于pdf的操作就变得很有必要,比如pdf文件的编辑.转换等,除了这两个,还有一个大家使用比较多的操作,就是给pdf文件添加水印.pdf文 ...

  3. 如何简简单单批量给PDF加水印

    PDF加水印是我们编辑PDF过程中经常会做的事情,如果只有一个PDF文件的时候,那么PDF加水印也挺简单,但是如果有很多PDF文件要一起加水印,那么如果再一个个打开编辑就显得很麻烦了.那么如何批量给P ...

  4. 批量给pdf加水印,pdf批量加水印方法

    如何批量给pdf加水印?如今我们每个人的保护意识都很强,尤其是关于知识产权方面,pdf作为大部分正式文件的主要格式,保护pdf文件不被盗用就尤为的重要了,除了给pdf文件加密以外,还可以在pdf文件的 ...

  5. java pdf加水印 性能_利用java批量给pdf加水印的方法示例

    前言 最近因为工作需要,要批量在pdf上加水印,但找了一圈pdf在mac下的水印工具,都不太好用,索性就用java写一个吧. 以下代码依赖itext5.3.3包,java操作pdf 依靠itext5. ...

  6. python pdf 加水印_Python批量给PDF加水印,10秒搞定“不可编辑”的PDF!

    在日常的工作中,我们经常需要和PDF文件打交道,PDF的处理,比如修改文字.增减页面等,都是非常麻烦的,相信大家有共同的感受. 有时我们还需要对PDF添加水印,野生的PDF工具都是给单个PDF添加水印 ...

  7. itext根据模版生成PDF与合并多个PDF以及向已存在PDF增加水印设置权限等操作

    我之前写了一篇文章讲了itext的基础操作常用方法(https://my.oschina.net/itazi/blog/1812042),但是有时涉及到比较复杂的PDF生成,手工操作就很复杂,可以使用 ...

  8. 批量去除PDF的水印(完全免费)

    在这里给大家推荐一款好用的软件,帮助去除PDF的水印 具体步骤: 1.选择一个PDF,并将想要删除的水印添加到水印待去除列表 2.点击下一步,便可生成相应的文件,保存即可

  9. C#给pdf增加水印,以及Dyanmics CRM本地化部署增加水印

    给PDF加水印用的插件是PdfSharp.DLL,在VS中可以直接安装. (非CRM需求者可跳过下面文字直接看代码) 如果是Dynamics CRM 本地不是想要加水印的话可以参考我的思路. 我的文档 ...

最新文章

  1. 云计算技术都要学什么?教你分清公有云、私有云和混合云
  2. Dijkstra 最短路
  3. access开发精要(8)-设置行高、列宽、隐藏字段,取消隐藏字段,冻结列,取消冻结列,网格线
  4. Mysql中explain命令查看语句执行概况
  5. C#相关基础知识点总结+基础代码
  6. Dubbo 需求、架构、使用Demo
  7. Android集成百度地图
  8. MMDetection2.XX-Backbone之ResNet源码最全解析
  9. 软路由:AdGuardHome + OpenWRT 让你家的网络无广告无跟踪
  10. oracle经典分数排名,力扣数据库题目: 分数排名(中等)
  11. ​smooth-signature​.js: 前端canvas实现H5带笔锋手写签名,支持PC端和移动端使用,无框架限制,Vue、React等均可使用
  12. w10用计算机卸载,win10系统用电脑自带的程序卸载软件的方法 (两种方法)
  13. HTML5 音频文件
  14. RxJava+Retrofit+Mvp实现购物车(没有结算页面)
  15. idea String报错问题
  16. 2019中国智能制造十大发展趋势
  17. MySQL锁表解决方法(转)
  18. 夜色总是匆匆降临...
  19. MySQL LIMIT 理解
  20. 程序员的2023发展方向

热门文章

  1. js Date类型相关(二)——获取时间、格式化时间以及当前月第一天、最后一天
  2. 一篇文章看懂TPCx-BB(大数据基准测试工具)源码
  3. 来自2020的二十一次总结
  4. [管理员手册](一)主板bios更新和固件远程管理
  5. PHPCMS本地项目二次开发流程
  6. leetcode LCP 07. 传递信息
  7. Python机器学习库CatBoost学习使用
  8. 看杜拉拉升职记的一些体会
  9. httppost 多参数封装用法
  10. excel属于什么类型的软件