java操作word、excel、pdf 下载添加水印
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 下载添加水印相关推荐
- java操作word/excel/pdf等文件技术方案
最近项目中遇到很多对word/excel/pdf等文件的操作,解决方案有好多,开源免费有:利用openoffice组件(需要安装openoffice软件),poi,itext等.也有收费的服务:asp ...
- Aspose.Java实现word转pdf,添加水印等操作
Aspose.Java实现word转pdf,添加水印等操作 一. word转pdf 二. 文档插入水印 Aspose是一款商用版控件,支持各类文档操作,这里主要介绍如何在Springboot项目中使用 ...
- 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 ...
- Java处理Word, Excel, PDF文档的4种开源系统的代码例子
原文: http://blog.csdn.net/wzwfly/article/details/1645046 很多人用java进行文档操作时经常会遇到一个问题,就是如何获得word,excel, ...
- Java操作Word转PDF(Word转图片)
1. spire.doc的jar引用 首先我们需要用到国产word处理工具jar包spire.doc,可以通过maven仓库寻找,然后在pom文件中直接引用. 此处需要注意,我们需要使用的是spire ...
- 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 ...
- java 操作 word 表格和样式,java读取word表格中的表格 java如何读取word中的excel表格数据...
Java 利用poi 可以直接读取word中的表格保持样式生1.读取word 2003及word 2007需要的jar包 读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi ...
- Java WORD转换PDF 并添加水印 (附赠jar提取链接)
Java WORD转换PDF 并添加水印 直接上代码 实现功能 docx文档转换为PDF 转换之后排版不混乱 使用工具(Jar包) aspose-words-15.8.0-jdk16.jar(用于PD ...
- Java操作word文档将docx转换为pdf格式
Java操作word文档将docx转换为pdf格式 一.整体说明 在上传 Office 课件时,格式有:doc,docx,xls,xlsx,ppt,pptx,程序需要将其 转换成 pdf 格式, 才能 ...
- java全文检索word中的内容_搜索引擎时对WORD,EXCEL,PDF,POWERPOINT文件全文检索的总结...
搜索引擎时对WORD,EXCEL,PDF,POWERPOINT文件全文检索的总结 (2012-02-12 16:31:59) 标签: pdf文档 幻灯片 pdf文件 全文检索 控件 it JAVA读取 ...
最新文章
- 英语口语(5月31日)
- 公告:Rover's Official Blog停止更新
- 等级考试文件服务器,内核级 Samba 文件共享服务器 CIFSD 正式开始测试
- php视频降清晰度,使用FFMPEG降低视频分辨率
- # 根据三边求角度_小升初数学必学的10种图形求面积法,你家娃都会了吗?
- 【汉化】DevExpress插件中RichEdit控件的自定义汉化方法
- svn提交提示服务器文件被锁,svn被锁定怎么解决-svn被锁定的解决方法 - 河东软件园...
- 【论文】赛尔原创 | EMNLP 2019基于知识库检索器的实体一致性端到端任务型对话系统...
- GEO基因芯片数据处理精华(一):GEOquery包
- 远程摄像头软件mjpg-streamer使用指南
- nodejs 做后台的一个完整业务整理
- SAP表维护自动带出对象属性
- 单元三:阻抗匹配(电容电感,变压器,传输线变压器,附带硬件电路)
- php是世界上最好的语言 ctf+代码审计+加密函数绕过
- 使用Gson序列化对象将属性值中“=”转为“\u003d”问题及解决
- npm WARN using --force Recommended protections disabled.
- PyTorch实践系列(二):GPU与CPU运行对比
- wpa_supplicant-2.6 君正平台(Zeratul )编译 支持WPS功能
- rgb转hsl,红绿蓝转色调饱和度亮度(颜色转换,c#)
- 跨境电商wish账户被禁用暂停的原因有哪些?wish店铺封号注意事项