MAVEN依赖

<dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version>
</dependency>
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.4.2</version>
</dependency>

代码片段

/**pdffile-文件,targetPath-生成图片保存位置,index文件的页数,water是否加水印*/

public static void pdfFileToImage(File pdffile, String targetPath, int index, boolean water) {try {FileInputStream instream = new FileInputStream(pdffile);InputStream byteInputStream = null;try {PdfReader reader = new PdfReader(instream);int pageCount = reader.getNumberOfPages();ByteArrayInputStream swapStream = null;if (pageCount > 0) {if (water) {BaseFont base =BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);PdfContentByte content;PdfGState gs = new PdfGState();// 在内容下方加水印ByteArrayOutputStream bos = new ByteArrayOutputStream();PdfStamper stamper = new PdfStamper(reader, bos);// 水印加在内容上方content = stamper.getOverContent(index + 1);// 设置透明度gs.setFillOpacity(0.4f);content.beginText();content.setFontAndSize(base, 50);content.setTextMatrix(70, 200);content.setColorFill(BaseColor.GRAY);content.showTextAligned(Element.ALIGN_CENTER, "这里是水印文字", 300, 250, 55);content.showTextAligned(Element.ALIGN_CENTER, "这里是水印文字", 300, 600, 55);content.endText();stamper.setFormFlattening(true);stamper.close();Document doc = new Document();ByteArrayOutputStream bout = new ByteArrayOutputStream();PdfCopy copy = new PdfCopy(doc, bout);doc.open();// 输出到docfor (int j = 1; j <= pageCount; j++) {copy.addPage(copy.getImportedPage(new PdfReader(bos.toByteArray()), j));}// copy.addPage(copy.getImportedPage(new PdfReader(bos.toByteArray()), index+1));doc.close();swapStream = new ByteArrayInputStream(bout.toByteArray());// index = 0;}PDDocument doc;if (swapStream == null) {// instream = new FileInputStream(pdffile);doc = PDDocument.load(pdffile);} else {doc = PDDocument.load(swapStream);}PDFRenderer renderer = new PDFRenderer(doc);BufferedImage image = renderer.renderImage(index, 2.0f);image.flush();ByteArrayOutputStream bs = new ByteArrayOutputStream();ImageOutputStream imOut;imOut = ImageIO.createImageOutputStream(bs);ImageIO.write(image, "png", imOut);byteInputStream = new ByteArrayInputStream(bs.toByteArray());}reader.close();} catch (IOException e) {e.printStackTrace();}File uploadFile = new File(targetPath);FileOutputStream fops;fops = new FileOutputStream(uploadFile);fops.write(readInputStream(byteInputStream));fops.flush();fops.close();byteInputStream.close();} catch (Exception e) {e.printStackTrace();}
}

pdf文件加水印输出图片相关推荐

  1. 咖啡汪日志——JAVA导出pdf文件加水印 文字+图片、文字

    咖啡汪日志--JAVA导出pdf文件加水印 文字和图片.文字 hello,又大家见面了! 作为一只不是在戏精就是在戏精路上的哈士奇,今天要展示给大家的就是如何快捷地给pdf文件增加各种水印.嗷呜呜,前 ...

  2. pdf文件加水印怎么加,5个方法快速易学

    PDF文件加水印是一个非常重要且常见的操作,对于不熟悉这一技能的人来说可能会感到困难.这也是为什么在某些浏览器中"pdf文件加水印怎么加"搜索量可高达几百万之多.但是,我们都知道掌 ...

  3. vue 中利用canvas 给pdf文件加水印---详细教程(附上完整代码)

    需求:在h5网页中打开pdf文件,要求给文件添加水印 实现技术及插件:vue,vue-pdf,canvas 插件安装: npm i vue-pdf --save npm i pdf-lib --sav ...

  4. 如何使用python给PDF文件加水印

    Python作为编程界最火的语言,能做的事几乎你能想到的它都能干,就连抢茅台都可以,还有什么不行?! Python作为脚本编程语言,可以做很多事情.使用Python,你可以轻松地给pdf加上水印. 你 ...

  5. iText包对每页pdf文件加水印

    https://ishare.iask.sina.com.cn/f/31zwqlKmIwM.html

  6. PDF.js对打印、下载按钮做限制,pdf文件加水印

  7. pdf怎么加水印?3个方法可完成

    pdf怎么加水印?在平时的工作中,在现今数字化时代,PDF文件是一种非常流行的电子文档格式,因为它可以保留文档的原始样式.字体和布局.我们经常需要使用或者编写一些包含重要信息的PDF文件,并且还会将这 ...

  8. 还在研究pdf怎么加水印?你用python的同事早已下班了

    还在研究pdf怎么加水印?你用python的同事早已下班了 利用Python能够在office办公时干很多事情,特别是要处理一些简单而重复的工作,这个时候选择python来帮你解决一定是再适合不过了. ...

  9. Java实现给PDF文件加文字水印和图片水印(可以自定义水印格式)

    使用Java代码给PDF文件加文字水印 直接上代码运行即可 依赖 有的可能用不上我直接复制全部了 <dependencies><!--word文件转PDF以及水印-->< ...

  10. 怎么在pdf上加水印?

    怎么在pdf上加水印?PDF文件凭借着良好的稳定性和兼容性成为我们办公时文件格式的首先,pdf文件中如果包含了一些重要信息内容时,我们都会想方法尽量对其进行保护,这时候就需要给pdf文件添加我们的专属 ...

最新文章

  1. 互补输出级采用共集形式是为了使_互补输出级采用共集形式是为了使
  2. POI 使用替换字符方式进行模板生成word
  3. Visual Studio 2017 15.5.0 正式发布 正式版下载
  4. 串口之GetCommTimeouts、SetCommTimeouts函数详解
  5. 移动端点击延迟300ms传说 你听过吗
  6. SQL Server权限设置
  7. linux命令中xargs,在Linux上使用xargs命令的详细教程
  8. Docker时代来临,你的团队准备好了吗?
  9. php mysql中华图书购物商城
  10. php mysql购物车代码_php购物车实现代码实例汇总
  11. 整理最新java面试宝典2019
  12. 水晶易表Xcelsius 2008安装指南 支持WIN10 64位 + office2016
  13. matlab pt站下载,PT站RSS下载使用教程 | PT邀请码网
  14. 「津津乐道播客」#353 编码人声:程序员都是「时间管理大师」
  15. libusb-win32介绍
  16. bitwise oracle,linq – 与NHibernate和Oracle的Bitwise AND
  17. 对于现在毕业之后,大部分找不到合适的工作,转行到软件开发(大部分是JAVA)的人来说,分享下自己的经验
  18. 计算机网络 路由选择,路由选择
  19. java数据类型最大值_Java 基本数据类型最大值极限和最小值极限
  20. QC新旧七图汇总连载9——亲和图

热门文章

  1. 存储过程——身份证校验
  2. 手写一个java爬虫,获取网页信息。
  3. 计算机上怎么计算x的n次方,计算x的n次方(用函数)
  4. matlab反激变换器仿真模型,基于MATLAB的反激变换器分析与设计-毕业设计.docx
  5. 初见NVelocity模板引擎
  6. CA数字证书是什么意思?SSL证书与CA数字证书有什么区别?
  7. 我的完整版mbti职业性格测试
  8. 周凯:如何利用数据挖掘让RTB广告效果倍增?
  9. 【愚公系列】2022年09月 微信小程序-slider滑动选择器详解
  10. virt-install安装虚拟机