1、pdf添加水印

pom文件引入依赖

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

java代码:

 /*** pdf添加水印后下载* @param os 响应输出流* @param srcFile  需要加水印的文件路径* @param markText  水印内容* @throws DocumentException* @throws IOException*/
public static void setPdfMark(OutputStream os, String srcFile,String markText) throws DocumentException, IOException {// 如果你想直接输出到某个路径,将os参数改为descFile(具体输出路径)//BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(descFile)));PdfReader  reader  = new PdfReader(srcFile);PdfStamper stamper = new PdfStamper(reader, os);int total = reader.getNumberOfPages() + 1;PdfContentByte content;BaseFont  base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);PdfGState gs   = new PdfGState();for (int i = 1; i < total; i++) {//content = stamper.getOverContent(i); // 在内容上方加水印content = stamper.getUnderContent(i); //在内容下方加水印gs.setFillOpacity(0.2f); // 透明度content.setGState(gs);content.beginText();content.setColorFill(BaseColor.BLACK);content.setFontAndSize(base, 50);content.setTextMatrix(70, 200);content.showTextAligned(Element.ALIGN_CENTER, markText, 300, 350, 55);content.endText();}stamper.close();}

2、word添加水印

使用 spire.office.free (免费版)、如果使用正版没有授权会存在spire.office 的水印文字
这里建议使用手动添加依赖,直接使用maven引入可能会和poi相关的报冲突
将jar包下载放到项目的lib目录下
<properties><thirdlib>/lib/</thirdlib>
</properties>
<dependency><groupId> e-iceblue </groupId><artifactId>spire.office.free</artifactId><version>5.3.1</version><scope>system</scope><systemPath>${basedir}${thirdlib}spire.office.free-5.3.1.jar</systemPath>
</dependency>

java代码:

/*** word添加水印* @param filePath 需要添加水印的文件地址* @param targetPath 水印生成后的文件地址* @param mark 水印文字* @return  添加水印后的临时文件地址(需要删除)**/
public static String InsertWordWatermark(String filePath,String targetPath,String mark){com.spire.doc.Document document = new com.spire.doc.Document();document.loadFromFile(filePath);Section section = document.getSections().get(0);//添加水印TextWatermark txtWatermark = new TextWatermark();txtWatermark.setText(mark);txtWatermark.setFontSize(40);txtWatermark.setColor(Color.red);txtWatermark.setLayout(WatermarkLayout.Diagonal);section.getDocument().setWatermark(txtWatermark);document.saveToFile(targetPath,FileFormat.Docx );return targetPath;}

3、excel添加水印
 使用的技术和word添加水印一样,都是使用的 spire.office.free

/*** excel水印工具类* @param filePath* @param targatPath E:\downByChrome\watormark\watormark.xlsx* @return
*/
public static String setExcelMark(String filePath,String targatPath){Workbook workbook = new Workbook();workbook.loadFromFile(filePath);//设置文本和字体大小Font font = new Font("仿宋", Font.PLAIN, 40);String watermark = "水印内容";for (Worksheet sheet : (Iterable<Worksheet>) workbook.getWorksheets()) {//调用DrawText() 方法插入图片BufferedImage imgWtrmrk = drawText(watermark, font, Color.pink, Color.white, sheet.getPageSetup().getPageHeight(), sheet.getPageSetup().getPageWidth());//将图片设置为页眉sheet.getPageSetup().setLeftHeaderImage(imgWtrmrk);sheet.getPageSetup().setLeftHeader("&G");//将显示模式设置为Layoutsheet.setViewMode(ViewMode.Layout);}//保存文档workbook.saveToFile(targatPath, ExcelVersion.Version2010);return targatPath;}public static BufferedImage drawText (String text, Font font, Color textColor, Color backColor, double height, double width) {//定义图片宽度和高度BufferedImage img = new BufferedImage((int) width, (int) height, TYPE_INT_ARGB);Graphics2D loGraphic = img.createGraphics();//获取文本sizeFontMetrics loFontMetrics = loGraphic.getFontMetrics(font);int liStrWidth = loFontMetrics.stringWidth(text);int liStrHeight = loFontMetrics.getHeight();//文本显示样式及位置loGraphic.setColor(backColor);loGraphic.fillRect(0, 0, (int) width, (int) height);loGraphic.translate(((int) width - liStrWidth) / 2, ((int) height - liStrHeight) / 2);loGraphic.rotate(Math.toRadians(-45));loGraphic.translate(-((int) width - liStrWidth) / 2, -((int) height - liStrHeight) / 2);loGraphic.setFont(font);loGraphic.setColor(textColor);loGraphic.drawString(text, ((int) width - liStrWidth) / 2, ((int) height - liStrHeight) / 2);loGraphic.dispose();return img;}

java代码导入包需要注意,导入的是 spire中的

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
import com.spire.doc.FileFormat;
import com.spire.doc.Section;
import com.spire.doc.TextWatermark;
import com.spire.doc.documents.WatermarkLayout;
import com.spire.xls.ExcelVersion;
import com.spire.xls.ViewMode;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

总结:

spire for java 中有单个 spire.doc、spire.xls 等,如果项目中只需要其中的一种,引入单个依赖即可,如果存在多个,需要使用spire.office.free,不如会报错 noMethod的错误

参考:Spire.Doc for Java 中文教程https://www.e-iceblue.cn/spiredocforjava/spire-doc-for-java-program-guide-content.html

java操作word、excel、pdf 下载添加水印相关推荐

  1. java操作word/excel/pdf等文件技术方案

    最近项目中遇到很多对word/excel/pdf等文件的操作,解决方案有好多,开源免费有:利用openoffice组件(需要安装openoffice软件),poi,itext等.也有收费的服务:asp ...

  2. Aspose.Java实现word转pdf,添加水印等操作

    Aspose.Java实现word转pdf,添加水印等操作 一. word转pdf 二. 文档插入水印 Aspose是一款商用版控件,支持各类文档操作,这里主要介绍如何在Springboot项目中使用 ...

  3. txt doc rtf html,JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例.docx

    JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例 JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例??2012-06-2 ...

  4. Java处理Word, Excel, PDF文档的4种开源系统的代码例子

    原文: http://blog.csdn.net/wzwfly/article/details/1645046   很多人用java进行文档操作时经常会遇到一个问题,就是如何获得word,excel, ...

  5. Java操作Word转PDF(Word转图片)

    1. spire.doc的jar引用 首先我们需要用到国产word处理工具jar包spire.doc,可以通过maven仓库寻找,然后在pom文件中直接引用. 此处需要注意,我们需要使用的是spire ...

  6. java poi- 实现 word Excel pdf ppt 转 HTML

    所需要 jar poi-3.17.jar poi-examples-3.17.jar poi-excelant-3.17.jar poi-ooxml-3.17.jar poi-ooxml-schema ...

  7. java 操作 word 表格和样式,java读取word表格中的表格 java如何读取word中的excel表格数据...

    Java 利用poi 可以直接读取word中的表格保持样式生1.读取word 2003及word 2007需要的jar包 读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi ...

  8. Java WORD转换PDF 并添加水印 (附赠jar提取链接)

    Java WORD转换PDF 并添加水印 直接上代码 实现功能 docx文档转换为PDF 转换之后排版不混乱 使用工具(Jar包) aspose-words-15.8.0-jdk16.jar(用于PD ...

  9. Java操作word文档将docx转换为pdf格式

    Java操作word文档将docx转换为pdf格式 一.整体说明 在上传 Office 课件时,格式有:doc,docx,xls,xlsx,ppt,pptx,程序需要将其 转换成 pdf 格式, 才能 ...

  10. java全文检索word中的内容_搜索引擎时对WORD,EXCEL,PDF,POWERPOINT文件全文检索的总结...

    搜索引擎时对WORD,EXCEL,PDF,POWERPOINT文件全文检索的总结 (2012-02-12 16:31:59) 标签: pdf文档 幻灯片 pdf文件 全文检索 控件 it JAVA读取 ...

最新文章

  1. 英语口语(5月31日)
  2. 公告:Rover's Official Blog停止更新
  3. 等级考试文件服务器,内核级 Samba 文件共享服务器 CIFSD 正式开始测试
  4. php视频降清晰度,使用FFMPEG降低视频分辨率
  5. # 根据三边求角度_小升初数学必学的10种图形求面积法,你家娃都会了吗?
  6. 【汉化】DevExpress插件中RichEdit控件的自定义汉化方法
  7. svn提交提示服务器文件被锁,svn被锁定怎么解决-svn被锁定的解决方法 - 河东软件园...
  8. 【论文】赛尔原创 | EMNLP 2019基于知识库检索器的实体一致性端到端任务型对话系统...
  9. GEO基因芯片数据处理精华(一):GEOquery包
  10. 远程摄像头软件mjpg-streamer使用指南
  11. nodejs 做后台的一个完整业务整理
  12. SAP表维护自动带出对象属性
  13. 单元三:阻抗匹配(电容电感,变压器,传输线变压器,附带硬件电路)
  14. php是世界上最好的语言 ctf+代码审计+加密函数绕过
  15. 使用Gson序列化对象将属性值中“=”转为“\u003d”问题及解决
  16. npm WARN using --force Recommended protections disabled.
  17. PyTorch实践系列(二):GPU与CPU运行对比
  18. wpa_supplicant-2.6 君正平台(Zeratul )编译 支持WPS功能
  19. rgb转hsl,红绿蓝转色调饱和度亮度(颜色转换,c#)
  20. 跨境电商wish账户被禁用暂停的原因有哪些?wish店铺封号注意事项

热门文章

  1. 用风格迁移搞事情!超越艺术字:卷积神经网络打造最美汉字
  2. 近在身边的神秘卫士——月球
  3. js和css实现圆形表盘时钟
  4. Lemur的安装于初步使用
  5. 单调有界证明其余实数完备性定理
  6. 【雕爷学编程】Arduino动手做(74)---6MV2飞控GPS模块
  7. 百格活动教你16种策略,从活动策划小白进阶为活动策划大神!
  8. unordered_map详解
  9. 18生成和解析JSON
  10. 败光370亿后,聚美优品踏上新的不归路?