引入依赖

<!-- pdf水印 --><dependency><groupId>com.lowagie.text</groupId><artifactId>com.springsource.com.lowagie.text</artifactId><version>${com.lowagie.text.version}</version></dependency>

工具类

import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.ColumnText;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfGState;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;
import com.wisesoft.core.util.FileUtil;public class PdfWatermark {/** 水印后缀 */public static final String WATERMARK_SUFFIX = "_warter.pdf";public static void main(String[] args) throws Exception {addWatermark("D:\\tomcat7\\webapps\\pdf\\AHT_1598439883000884326.pdf", "D:\\tomcat7\\webapps\\pdf\\WAHT_1598439883000884326.pdf","成都市系统","成都市系统","成都市局","成都市系统");}public static void addWatermark(String sourcepath, String savepath, String waterMarkName) throws Exception {if (FileUtil.exists(sourcepath)) {PdfReader pdfReader = new PdfReader(sourcepath);// Get the PdfStamper objectPdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream(savepath));PdfContentByte content = null;BaseFont base = null;Rectangle pageRect = null;PdfGState gs = new PdfGState();try {// 设置字体base = BaseFont.createFont("/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);} catch (DocumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Font f = new Font(base);try {if (base == null || pdfStamper == null) {return;}// 设置透明度为0.4gs.setFillOpacity(0.4f);gs.setStrokeOpacity(0.4f);int toPage = pdfStamper.getReader().getNumberOfPages();for (int i = 1; i <= toPage; i++) {pageRect = pdfStamper.getReader().getPageSizeWithRotation(i);// 计算水印X,Y坐标float x = pageRect.getWidth() / 2;float y = pageRect.getHeight() / 2;// 获得PDF最顶层content = pdfStamper.getOverContent(i);content.saveState();// set Transparencycontent.setGState(gs);content.beginText();content.setColorFill(Color.LIGHT_GRAY);content.setFontAndSize(base, 40);// 水印文字成45度角倾斜content.showTextAligned(Element.ALIGN_CENTER, waterMarkName, x, y, 45);content.endText();}System.out.println("水印添加成功,保存地址:"+savepath+",水印为:"+waterMarkName);} catch (Exception ex) {ex.printStackTrace();} finally {content = null;base = null;pageRect = null;pdfStamper.close();}}}public static void addWatermark(String sourcepath, String savepath, String waterMarkName, String pageHeade,String foot) throws Exception {if (FileUtil.exists(sourcepath)) {PdfReader pdfReader = new PdfReader(sourcepath);// Get the PdfStamper objectPdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream(savepath));PdfContentByte content = null;BaseFont base = null;Rectangle pageRect = null;PdfGState gs = new PdfGState();try {// 设置字体base = BaseFont.createFont("/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);} catch (DocumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Font f = new Font(base);try {if (base == null || pdfStamper == null) {return;}// 设置透明度为0.4gs.setFillOpacity(0.4f);gs.setStrokeOpacity(0.4f);int toPage = pdfStamper.getReader().getNumberOfPages();for (int i = 1; i <= toPage; i++) {pageRect = pdfStamper.getReader().getPageSizeWithRotation(i);// 计算水印X,Y坐标float x = pageRect.getWidth() / 2;float y = pageRect.getHeight() / 2;// 获得PDF最顶层content = pdfStamper.getOverContent(i);content.saveState();// set Transparencycontent.setGState(gs);content.beginText();content.setColorFill(Color.LIGHT_GRAY);content.setFontAndSize(base, 60);// 水印文字成45度角倾斜content.showTextAligned(Element.ALIGN_CENTER, waterMarkName, x, y, 45);content.endText();// 添加页脚,左侧文字,右侧页码ColumnText.showTextAligned(content, Element.ALIGN_RIGHT,new Phrase(String.format("第 %d 页/共 %d 页", i, toPage), f), 550f, 28, 0);ColumnText.showTextAligned(content, Element.ALIGN_LEFT, new Phrase(foot, f), 50f, 28, 0);// 添加页眉 (文字页眉,居中)ColumnText.showTextAligned(content, Element.ALIGN_CENTER, new Phrase(pageHeade, f), 150f, 800, 0);}System.out.println("水印添加成功,保存地址:"+savepath+",水印为:"+waterMarkName);} catch (Exception ex) {ex.printStackTrace();} finally {content = null;base = null;pageRect = null;pdfStamper.close();}}}public static void addWatermark(String sourcepath, String savepath, String waterMarkName, String pageHeadLeft,String pageHeadRight,String foot) throws Exception {if (FileUtil.exists(sourcepath)) {PdfReader pdfReader = new PdfReader(sourcepath);// Get the PdfStamper objectPdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream(savepath));PdfContentByte content = null;BaseFont base = null;Rectangle pageRect = null;PdfGState gs = new PdfGState();try {// 设置字体base = BaseFont.createFont("/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);} catch (DocumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Font f = new Font(base);try {if (base == null || pdfStamper == null) {return;}int toPage = pdfStamper.getReader().getNumberOfPages();for (int i = 1; i <= toPage; i++) {// 设置透明度为0.4gs.setFillOpacity(0.4f);gs.setStrokeOpacity(0.4f);pageRect = pdfStamper.getReader().getPageSizeWithRotation(i);// 计算水印X,Y坐标float x = pageRect.getWidth() / 2;float y = pageRect.getHeight() / 2;// 获得PDF最顶层content = pdfStamper.getOverContent(i);content.saveState();// set Transparencycontent.setGState(gs);content.beginText();content.setColorFill(Color.LIGHT_GRAY);content.setFontAndSize(base, 40);// 水印文字成45度角倾斜content.showTextAligned(Element.ALIGN_CENTER, waterMarkName, x, y, 45);content.endText();// 设置透明度为0.4gs.setFillOpacity(0.9f);gs.setStrokeOpacity(0.9f);// 添加页脚,左侧文字,右侧页码ColumnText.showTextAligned(content, Element.ALIGN_RIGHT,new Phrase(String.format("第 %d 页/共 %d 页", i, toPage), f), 550f, 20, 0);ColumnText.showTextAligned(content, Element.ALIGN_LEFT, new Phrase(foot, f), 50f, 20, 0);// 添加左页眉ColumnText.showTextAligned(content, Element.ALIGN_CENTER, new Phrase(pageHeadLeft, f), 150f, 815, 0);// 添加右页眉ColumnText.showTextAligned(content, Element.ALIGN_CENTER, new Phrase(pageHeadRight, f), 500f, 815, 0);}System.out.println("水印添加成功,保存地址:"+savepath+",水印为:"+waterMarkName);} catch (Exception ex) {ex.printStackTrace();} finally {content = null;base = null;pageRect = null;pdfStamper.close();}}}}

总结之使用lowagie.text添加PDF水印相关推荐

  1. c#程序设计教程 唐大仕pdf_C# 添加PDF水印

    概述 一般我们在向文档添加水印时,会分为直接添加文字水印和加载图片添加图片水印两种情况.常见的,在添加文字水印时会多以声明文档版权.权威性的文字.标语或者名称等:同样的,图片水印也通常可以是某组织的L ...

  2. aspose添加word水印和itextpdf添加pdf水印

    项目描述:最近有一个需求是在文件上传的时候,需要添加水印来防伪,防止篡改.网上找了下,发现一个aspose可以实现 aspose添加word水印 jar包在最下面!!! package com.wlk ...

  3. C#如何添加PDF水印

    水印,一般分为文本水印和图片水印,是一种作为文档防伪.声明权限的重要保护手段.常见的,是在Word中添加水印,在PDF中该怎么来实现呢.下面将介绍来实现PDF文档添加水印的具体操作方法. 使用工具: ...

  4. PDF编辑器中文版功能有什么 如何添加PDF水印

    现在工作中,工作者之间很流行使用PDF编辑器,它可以很好的解决PDF文件中的各种问题.而对于PDF编辑器来说也有中文版与英文版,但就工作而言中文版肯定更加适合英文版.中文版更加利于工作中的阅读.审查. ...

  5. Python添加pdf水印

    0.用到两个扩展模块:ReportLab.PyPDF2. 1.创建水印PDF. 1).创建文字水印pdf文件 代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  6. python添加文字水印中间旋转45度,Python添加pdf水印

    1.创建水印PDF. 1).创建文字水印pdf文件 代码:#encoding=utf-8 #author: walker #date: 2014-03-17 #function: 创建文字水印pdf ...

  7. 关于添加pdf水印那些事

    鱼酱第一次接触到为pdf加水印的功能,需求是输入使用事由,将事由作为附件pdf的水印,使用者下载得到水印附件. 度娘很快告诉我itextsharp非常好使,于是下载了dll,做出了生成文字水印的功能. ...

  8. 电脑上怎么做pdf文件_PDF文件怎么加水印?PDF水印添加方法

    有时候为了不让他人随意盗用我们PDF文件里的内容或图片,或者是出于宣传曝光的目的,我们可以通过给自己的PDF文件添加水印的方式来保护PDF文件里的内容.那么PDF文件怎么加水印?有什么方便的PDF水印 ...

  9. pdf水印怎么加?步骤非常简单

    pdf水印怎么加?相信任何小伙伴在工作或者生活学习中都会使用到pdf文件,pdf文件具有稳定的特点,除此之外pdf文件不易编辑的特点也让大家印象深刻,pdf文件和其它office文件还是有很大的区别, ...

  10. java操作图片集合(添加图片水印、文字水印,文字生成图片,图片转pdf等)

    花不多说 ,上代码 简单文字水印 // path 为原图片地址, outPath则是输出新图片地址public static void addWatermark(String path, String ...

最新文章

  1. Openlayers中使用Cluster+Overlay实现点击单个要素和聚合要素时显示不同弹窗
  2. go protobuf tcp 粘包处理 demo
  3. linux perl的while循环中ctrl+c失效,perl循环控制
  4. 模拟运行php,window_PHP+Javascript模拟Matrix画面, 直接存为*.php文件运行即 - phpStudy...
  5. 170609、Nginx配置文件详细说明
  6. jmeter分布式步骤
  7. Vue常用特性~非常详细哦,带源码资料
  8. 4.微服务设计 --- 集成
  9. 77. PHP 文件读取
  10. dcm文件转换成jpg文件
  11. bum报文_数据中心VxLAN技术概念和原理解读
  12. 甲骨文裁员是在为云业务转型太慢埋单
  13. 淘宝七天自动确认收货,怎么设计?RabbitMQ延迟队列,消息延迟推送delayed_message入门教程!
  14. 记录mysql中如何统计日周月季度年
  15. 正确地使用“respectively“
  16. AliOS-Things--EMW3060 (9)uart
  17. 电商直播方案主要有哪些内容?
  18. Mac下如何重启SSH
  19. Gantt(甘特图)与PERT(项目计划评审技术)图
  20. Flink学习-DataStream-HDFSConnector(StreamingFileSink)

热门文章

  1. python下载快手视频教程_python如何下载快手视频
  2. 计算机应用历年高考真题,春季高考历年真题-2013年天津市春季高考计算机试卷...
  3. iOS 简易音乐播放界面
  4. GWAS meta分析
  5. MySQL可视化工具之SQLyog小海豚
  6. android5.1+xposed卡刷包,一加5 7.1 ROM刷机包 最终版王者高帧率极速吃鸡超多自定义Xposed...
  7. python 下载文件 限速-突破xx云盘的限速,利用python实现加速下载
  8. Eclipse SVN插件Subversive的使用(分支,合并,同步,切换)
  9. c语言小学生入门自学,啊哈C语言:小学生坐在马桶上都可以读懂的C语言编程入门书 PDF 扫描版[20M]...
  10. 计算机专业英语词汇1695词(35天记忆)