以下是用PDFlib给pdf添加水印的速记,另外PDFStamp是个很好用的pdf水印工具。PDFlib功能比较多、杂;PDFStamp功能单一,更方便使用。据walker测试,PDFlib会比PDFStamp快一些。

#encoding=utf-8

#author: walker

#date: 2014-03-27

from PDFlib.PDFlib import PDFlib

from PDFlib.PDFlib import PDFlibException

#给单个文件添加水印,在右上角和左下角各添加一个水印

#所有参数均为全路径文件名

def add_watermark(pdf_file_in, pdf_file_out, image_file):

p = PDFlib()

p.set_option("license=xxxxx")   #your key

p.set_option("errorpolicy=return");

if (p.begin_document(pdf_file_out, "") == -1):

raise PDFlibException("Error: " + p.get_errmsg())

p.set_info("Author", "walker");

p.set_info("Title", "");

p.set_info("Creator", "walker");

p.set_info("Subject", "");

p.set_info("Keywords", "");

#p.set_info("Producer", "walker");

#输入文件

indoc = p.open_pdi_document(pdf_file_in, "");

if (indoc == -1):

raise PDFlibException("Error: " + p.get_errmsg())

endpage = p.pcos_get_number(indoc, "length:pages");

endpage = int(endpage)

image = p.load_image("auto", image_file, "")

if image == -1:

raise PDFlibException("Error: " + p.get_errmsg())

for pageno in range(1, endpage+1):

page = p.open_pdi_page(indoc, pageno, "");

if (page == -1):

raise PDFlibException("Error: " + p.get_errmsg())

p.begin_page_ext(0, 0, "");     #添加一页

p.fit_pdi_page(page, 0, 0, "adjustpage")

page_width = p.get_value("pagewidth", 0)    #单位为像素72dpi下像素值

page_height = p.get_value("pageheight", 0)  #单位为像素72dpi下像素值

imagewidth = p.info_image(image, "imagewidth", "");

imageheight = p.info_image(image, "imageheight", "");

margin = 1000   #用于设置水印边距

optlist_top = "boxsize={" + str(page_width) + " " + str(page_height) + "} "

optlist_top += "position={" + str(margin/page_width) + " " + str(margin/ page_height) + "} "

optlist_top += " fitmethod=clip dpi=96"

optlist_bottom = "boxsize={" + str(page_width) + " " + str(page_height) + "} "

optlist_bottom += "position={" + str(100 - margin/page_width) + " " + str(100 - margin/ page_height) + "} "

optlist_bottom += " fitmethod=clip dpi=96"

p.fit_image(image, 0, 0, optlist_bottom)

p.fit_image(image, 0, 0, optlist_top)

p.close_pdi_page(page);

p.end_page_ext("");

p.close_image(image)

p.end_document("")

相关阅读:

*** walker ***

python给pdf加水印_用PDFlib给PDF添加水印(Python)相关推荐

  1. python给视频加水印_视频水印_Python SDK_服务端SDK_视频点播 - 阿里云

    初始化客户端 使用前请先初始化客户端,请参见 添加水印 调用AddWatermark接口,完成添加水印功能. 接口参数和返回字段请参见 说明水印文件OSS上传详细参数请参见from aliyunsdk ...

  2. python给视频加水印_爬虫视频统一添加水印(moviepy实现)

    这不昨天刚解决一个问题我们部门老大又来提问题啦,要求给所有视频统一添加水印,心想这不是运营美工干的活嘛,我直接录视频不就行啦!哈哈哈 只能这里唠叨一下,该干还要撸起袖子干起来啊!谁让我们是程序媛呢!直 ...

  3. PDF转换图片,图片的切割,图片转换PDF以及PDF加水印等记录贴

    PDF转变为图片: 把图片进行切割: 把图片转变回PDF: 为PDF加水印文字: 为PDF加水印图片. 1,PDF转变为图片 /*** @author dalin*将PDF格式的文件转换成png文件* ...

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

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

  5. Springboot使用itext及documents4j操作pdf(word转pdf、pdf加水印(文字或图片,可指定位置)、pdf加密(打开密码,编辑密码))

    pom.xml引入 <!-- pdf文档生成 --><dependency><groupId>com.documents4j</groupId>< ...

  6. (Java)word转pdf(aspose),pdf加水印(itextpdf),并支持POI模板(包括checkbox)导出

    目录 1.引入jar包 2.pdf处理工具类 3.poi模板导出工具类 4.测试类 5.模板 6.最终效果 1.引入jar包 2.pdf处理工具类 import com.aspose.cells.Pd ...

  7. java pdf水印排布问题_java 实现 PDF 加水印功能

    使用java代码实现给PDF加水印的功能 首先导入所需要的依赖 com.itextpdf itextpdf 5.5.11 com.itextpdf itext-asian 5.2.0 java 代码实 ...

  8. Java实现Excel和word转pdf加水印,复制及可用

    Java实现Excel和word转pdf加水印,复制及可用 时隔大半年,之前朋友,今天突然找我说,他们有个需求要做这东西.想起来之前自己照着官方文档写,也走了不少坑.今天就索性写个,也为了方便以后使用 ...

  9. java如何给pdf加水印_java pdf加水印的方法

    本文实例为大家分享了java pdf加水印的具体代码,供大家参考,具体内容如下 引入依赖 com.itextpdf.tool xmlworker 5.5.10 com.itextpdf itextpd ...

  10. XDOC Office Server 发布 1.1.0 版本,支持 PDF 加水印

    XDOC Office Server 是一个 JavaEE 服务,用于将 Office 文档转换为 PDF,格式兼容性好. 版本更新 支持 &_watermark 参数,对生成的 PDF 加水 ...

最新文章

  1. 增量备份和差异备份的区别|什么是增量差异备份
  2. iOS开发核心动画之画图板
  3. reactjs antd(ant-design)安装、基本使用及css样式的按需引入
  4. matlab 颜色势能,Matlab在模拟晶面势能分布中的应用
  5. 看Quick Audience 如何有效提升营销活动管理效率
  6. 社交网络登录失败 当尝试用您的社交网络账号进行第三方登录时,发生了一个错误。
  7. .NetCore中IdentityServer使用nginx-proxy的一次排错经历
  8. http://101.132.165.115/
  9. c语言代码中调用系统命令行.sh shell脚本,linux shell system传参
  10. 9-11NOIP模拟赛总结
  11. SQL Developer显示多个工作表
  12. puppet详解(一)——puppet基础知识
  13. datanode启动后闪退_网友吐槽12306 App:不同意获取个人信息就会“闪退”
  14. 顶级SaaS公司的共同基因都有什么?
  15. js判断是否为微信浏览器
  16. unity开发xbox手柄 驱动坑
  17. 关于jQuery UI 使用心得及技巧
  18. JQery的lond方法加载内部页面,内部页面不加载Js
  19. 面向未来,我们来聊一聊什么是现代化数据架构
  20. 下一清分日期是几年前_清分日期2018年11/8号,实习期在2019年1/1号 B2清分日期在实习期前...

热门文章

  1. 易用性软件测试用例,易用性、界面测试用例
  2. 模拟某个浏览器抓取数据
  3. react实战之cnode—01环境配置
  4. React Hooks 实战 CNode 社区移动端网站
  5. 计算可靠度编制matlab,工程结构可靠度计算的Matlab实现
  6. webserver总结
  7. 学习了Python大数据之后,将来主要做什么
  8. JavaScript函数参数缺省值
  9. 智能读物产品优化、运营方案
  10. java 调用python脚本的方法