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. iOS - 支持水平 / 垂直显示自动滚动的跑马灯控件 --- SKAutoScrollLabel 的使用和实现
  2. pybind11向C++ dll 传递数组 图像
  3. Go Python 6: Softmax Classifier
  4. html iframe.b.gen 病毒,常见病毒及处理方法.doc
  5. CMU 11642 Search Engines - 大纲梳理
  6. 一个炒鸡好用的pdf阅读器
  7. 保证Web数据库安全 认真把好七道关
  8. ubuntu14.04+ROS indigo+kinectV1 骨骼点检测
  9. 计蒜客挑战难题:简单斐波那契
  10. 1024程序员日,互联网公司们福利感人;支付宝36万招“找茬”程序员
  11. voices——最后的决赛
  12. 阿里云云计算 38 PolarDB MySQL的数据管理
  13. Photoshop DPI缩放比例问题
  14. 视频无损裁剪、转换、合并、加水印、加特效?一切搞定!
  15. 截止频率的估算-例题
  16. 变焦光学系统工作原理及初始结构设计方法
  17. Word 2019 自带公式快速编号方法
  18. cad能整体比例缩小吗_如何用cad将图整体比例放大
  19. Coding 配置SSH凭据
  20. 自媒体人:如何在竞争激烈的环境下生存?

热门文章

  1. nodejs入门--commonjs规范
  2. HBuilderX连接模拟器
  3. 锁分实锤!B站三体动画评分只有…好文!拆解追溯GPT-3.5各项能力起源;餐饮店后厨AI解决方案PreciTaste… | ShowMeAI资讯日报
  4. python 绘图时显示不同的数学符号alpha,beta,偏导、求和等等
  5. 区块链开发公司发展快 未来主要应用方向怎么走
  6. LINUX 终端提示符个性设置
  7. k-means算法、性能及优化
  8. c语言默认程序文件扩展名,系统默认的C语言源程序扩展名为.C,需经过()之后,生成.exe文件,才能运行。...
  9. 2020.9.26--PS--螺旋结构、选区操作、色板和油漆桶
  10. Android tv 导航页面,android6.0 TV 添加自定义导航栏