python 批量给 word 或 pdf 文件添加水印

更新

20200310 更新 README,对于中文显示为方块的问题,需使用宋体(simsun.ttc)、黑体(simhei.ttf)等字体。

1.依赖库

pip install -r requirements.txt

2.部分python库说明

comtypes,用于调用 word 等应用程序

reportlab,用于生成 pdf 水印文件

3.安装pdf工具包

# PyPDF4,用于合成 pdf 文件

git clone https://github.com/danpe1327/PyPDF4.git pypdf4

cd pypdf4

python setup.py install --record files.txt

4.使用说明

命令

python add_watermark.py input_file

--watermark DANPE

--angle 45

--font_file arial.ttf

--font_size 36

--color black

--alpha 0.2

# 参数说明

input_file 输入单一文件或文件夹路径,目前支持 word, excel, powerpoint 的新旧 6 种格式与 pdf 格式

--watermark 水印文本,通过符号 ‘|’ 换行

--angle 水印文本方向

--font_file 可自定义字体文件,若无输入或字体文件不存在,则使用默认的字体。对于中文无法显示的问题,需要使用包含中文的字体,如宋体(simsun.ttc)、黑体(simhei.ttf)等。

--font_size 字体大小

--color 水印颜色,可选常见的颜色,如 [black, red, blue, green, yellow, white, gold, purple, pink, orange] 等

--alpha 字体透明度

--only_pdf 只转换文本为 pdf,不添加水印

--no_date 水印不加入日期

# 输出

若输入为单一文件,会新建一个 wm-files 目录,将添加水印的文件放置到该目录下;

若输入为文件夹,则会遍历目录,将所有符合格式的文件添加水印,并新建一个 文件夹名+"-wm-files" 的目录,存放结果。

5.常见错误

转换 ppt 文件时,出现错误 “The Python instance can not be converted to a COM object”

在保存成 pdf 文件时,需要输入参数 PrintRange

office_file.ExportAsFixedFormat(pdf_file, 32, PrintRange=None)

为中文文档添加水印报错 “'latin-1' codec can't encode characters in position 8-12: ordinal not in range(256)”

修改pypdf4 的 utils.py,以支持中英文合成。

代码路径: \PyPDF4\utils.py

将其中的 r = s.encode('latin-1') ,改为如下

try:

r = s.encode('latin-1')

if len(s) < 2:

bc[s] = r

return r

except Exception as e:

r = s.encode('utf-8')

if len(s) < 2:

bc[s] = r

return r

win32 位系统下,出现 readerror

修改pypdf4 的generic.py

代码路径:\PyPDF4\的generic.py

if not pdf.strict:

warnings.warn(

"Illegal character in Name Object", PdfReadWarning

)

return NameObject(name)

else:

raise PdfReadError("Illegal character in Name Object")

修改为:

try:

if not pdf.strict:

warnings.warn(

"Illegal character in Name Object", PdfReadWarning

)

return NameObject(name)

else:

return NameObject(name.decode('gbk'))

except Exception as e:

raise PdfReadError("Illegal character in Name Object")

6.pdf 权限

-1 permit everything

-4096 deny anything

-4092 only print low resolution

-2044 only print high resolution

0000 0000 0001 unknown

0000 0000 0010 unknown

0000 0000 0011 unknown

0000 0000 0100 打印(低分辨率)

1000 0000 0100 打印(高分辨率)

0000 0000 1000 更改文档、文档组合、填写表单域、签名、创建模板页面

0000 0001 0000 内容复制、复制内容用于辅助工具

0000 0010 0000 注释、填写表单域、签名

0000 0100 0000 unknown

0000 1000 0000 unknown

0001 0000 0000 填写表单域、签名、创建模板页面

0010 0000 0000 复制内容用于辅助工具

0100 0000 0000 文档组合

1000 0000 0000 unknown

python给word添加水印_python 批量给 word,excel,ppt 或 pdf 文件添加水印相关推荐

  1. php word excel转pdf文件怎么打开,php office文件(word/excel/ppt)转pdf文件,pptpdf

    php office文件(word/excel/ppt)转pdf文件,pptpdf 把代码放到了github上,点击进入 前阶段有个项目用到了线上预览功能, 关于预览office文件实现核心就是,把o ...

  2. python读取只读word只读_Python用于NLP :处理文本和PDF文件

    提示:代码图片可以点击全屏查看,双指操作还可以放大缩小. 这是我的Python用于自然语言处理(NLP)系列文章的第一篇文章.在本文中,我们将从Python for NLP的基础知识开始.我们将看到如 ...

  3. python提取word目录_python批量提取word内信息

    单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个python小程序把所需的信息打印出来 #coding:utf-8 import os import ...

  4. python批量更改word文件名_python批量修改word文件名

    最近不小心把硬盘给格式化了,由于当时的文件没有备份,所以一下所有的文件都没有了,于是只能采取补救措施,用文件恢复软件恢复了一部分的数据出来,但是恢复完毕的文件的文件名全丢了,所有的文件只有代号,如下面 ...

  5. python 修改word内容_python批量修改word文件名

    最近不小心把硬盘给格式化了,由于当时的文件没有备份,所以一下所有的文件都没有了,于是只能采取补救措施,用文件恢复软件恢复了一部分的数据出来,但是恢复完毕的文件的文件名全丢了,所有的文件只有代号,如下面 ...

  6. PDF文件添加水印怎么添加?只需要两步轻松添加水印

    PDF文件添加水印怎么添加?我们在处理工作文件时,都非常在意文件的隐私性,我们经常会使用一些方法来确保我们文件的内容不被别人窃取,其中一种方法就是给PDF文件添加水印,这样文件的内容就不会轻易被窃取了 ...

  7. 使用python搭配pandoc实现html批量转word

    使用python搭配pandoc实现html批量转word 好兄弟工作上有一批(5000+)html的文档需要转成word格式,他采用了两种实现方式,但都有些问题: 直接改后缀有些会乱码 --> ...

  8. Python批量实现Word、EXCLE、PPT转PDF文件

    一.绪论背景 在日常办公和文档处理中,有时我们需要将多个Word文档.Excel表格或PPT演示文稿转换为PDF文件.将文档转换为PDF格式的好处是它可以保留文档的布局和格式,并且可以在不同平台上进行 ...

  9. Word、PPT、PDF 文件怎么批量插入首页、扉页、尾页?怎么在指定位置插入页?

    概要:在我们日常办公中,经常会碰到需要给一批 Word 文件批量插入首页或者尾页,或者在指定的位置插入新的页的需求,当然除了 Word,PDF 以及 PPT 也有相同的需求.「我的ABC软件工具箱」就 ...

最新文章

  1. 如何在同一台电脑上同时运行2个tomcat
  2. 1.19 实例:Java求数组元素的最大和最小值
  3. 简介(CAB和SCSF编程)
  4. DPM(Deformable Parts Model)--原理(一)
  5. 一个好的技术团队应该怎么选择开发语言
  6. 华为回应“发射卫星抢占6G”:假消息
  7. 2021牛客暑期多校训练营10,签到题FH
  8. 输入框输入文字字符匹配
  9. 分布式文件系统(FastDFS+Tengine+fastdfs-nginx-module)
  10. 管理感悟:领导如何处理拍马
  11. 建模笔记---从3dsmax到Uvlayout到Sp的流程学习笔记
  12. 调试 STM32F429 + USB3300
  13. 【深度学习】模型平均误差分析
  14. 计算机无法验证签名,win7系统无法验证文件数字签名的解决方法
  15. 学习vue之前应该有哪些基础知识
  16. 除了Google Adsense外比较适合英文站投放的国外广告联盟
  17. CAD转PDF其实很简单,掌握这4种方法就可以
  18. 【浙大版《C语言程序设计实验与习题指导(第4版)》题目集】实验2-4-4 求简单交错序列前N项和
  19. Linux断开usb调试命令,Android关闭USB的ADB调试和文件传输功能(禁用USB)【转】
  20. 泰语专业论文选题有什么建议吗?

热门文章

  1. 柔性车间调度问题丨一种贪婪策略的应用:以算例MK02例
  2. 用python写一个股票量化交易的选股代码
  3. nginx服务器配置django负载均衡
  4. 【91xcz】通过闪存盘启动电脑进行Windows 8系统安装
  5. 零基础学 Go 语言(41):Go 读文件的七种方法
  6. 2020中国最好学科排名发布,各专业哪家强?
  7. SpringBoot多模块项目初始化搭建
  8. ADOBE CC 简体大师版 v3.22 赢政发布
  9. css3实现3D切换
  10. 用tcgames在电脑上玩荒野行动手机游戏效果比安卓模拟器好太多了