引入jar

 <!-- word转pdf--><dependency><groupId>com.aspose.words</groupId><artifactId>aspose-words</artifactId><version>21.11.0-jdk17</version></dependency><!-- 加水印--><dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>4.2.0</version></dependency>

代码

import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;import com.aspose.words.Document;
import com.aspose.words.HeaderFooter;
import com.aspose.words.HeaderFooterType;
import com.aspose.words.Node;
import com.aspose.words.Paragraph;
import com.aspose.words.Section;
import com.aspose.words.Shape;
import com.aspose.words.ShapeType;
import com.lowagie.text.Image;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfGState;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;/**** @Title: WordToPdfUtils* aspose 收费* @Description:*/public class WordToPdfUtils {/*** word to pdf ---com.aspose.words** @param inPath 原始word 全路径* @param outPath 生成的pdf 全路径* @param  outPdfAndWaterMarkPath 带水印的pdf全路径* @param waterMarkImagePath 水印图片的全路径* @author an* @throws Exception*/public static String docPdf(String inPath, String outPath,String outPdfAndWaterMarkPath, String waterMarkImagePath) {FileOutputStream fileOS = null;FileOutputStream fileOS2 = null;// 1 验证aspose.word组件是否授权if (!isWordLicense()) {return null;}// 2 word转pdftry {Document doc = new Document(inPath);// 原始word路径fileOS = new FileOutputStream(new File(outPath));// 输出路径doc.save(fileOS, com.aspose.words.SaveFormat.PDF);
//          fileOS.close();System.out.println("word转pdf--ok");// 3设置pdf的header,否则加水印报错Node watermark = new Shape(doc, ShapeType.IMAGE);Paragraph watermarkPara = new Paragraph(doc);watermarkPara.appendChild(watermark);for (Section sect : doc.getSections()) {insertWatermarkIntoHeader(watermarkPara, sect,HeaderFooterType.HEADER_PRIMARY);insertWatermarkIntoHeader(watermarkPara, sect,HeaderFooterType.HEADER_FIRST);insertWatermarkIntoHeader(watermarkPara, sect,HeaderFooterType.HEADER_EVEN);}System.out.println("Watermark Set");// 4添加水印fileOS2 = new FileOutputStream(new File(outPdfAndWaterMarkPath));BufferedOutputStream bos = new BufferedOutputStream(fileOS2);PdfReader reader = new PdfReader(outPath);PdfStamper stamper = new PdfStamper(reader, bos);int total = reader.getNumberOfPages() + 1;PdfContentByte content;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);Image image = Image.getInstance(waterMarkImagePath);/** img.setAlignment(Image.LEFT | Image.TEXTWRAP);* img.setBorder(Image.BOX); img.setBorderWidth(10);* img.setBorderColor(BaseColor.WHITE);* img.scaleToFit(100072);//大小 img.setRotationDegrees(-30);//旋转*/image.setAbsolutePosition(200, 206); // set the first background// image of the absoluteimage.scaleToFit(200, 200);content.addImage(image);System.out.println("Watermark--ok");}stamper.close();} catch (Exception e) {e.printStackTrace();System.out.println("word转pdf失败");}finally{if(fileOS !=null){try {closeStream(fileOS);} catch (IOException e) {e.printStackTrace();}}if(fileOS2 !=null){try {closeStream(fileOS2);} catch (IOException e) {e.printStackTrace();}}}// EPUB, XPS, SWF 相互转换return outPdfAndWaterMarkPath;}private static void insertWatermarkIntoHeader(Paragraph watermarkPara,Section sect, int headerType) throws Exception {HeaderFooter header = sect.getHeadersFooters().getByHeaderFooterType(headerType);if (header == null) {header = new HeaderFooter(sect.getDocument(), headerType);sect.getHeadersFooters().add(header);}header.appendChild(watermarkPara.deepClone(true));}/*** @Description: 验证aspose.word组件是否授权:无授权的文件有水印和试用标记*/public static boolean isWordLicense() {boolean result = false;try {// 避免文件遗漏String licensexml = "<License>\n"+ "<Data>\n"+ "<Products>\n"+ "<Product>Aspose.Total for Java</Product>\n"+ "<Product>Aspose.Words for Java</Product>\n"+ "</Products>\n"+ "<EditionType>Enterprise</EditionType>\n"+ "<SubscriptionExpiry>20991231</SubscriptionExpiry>\n"+ "<LicenseExpiry>20991231</LicenseExpiry>\n"// +// "<SerialNumber>23dcc79f-44ec-4a23-be3a-03c1632404e9</SerialNumber>\n"+ "<SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n"+ "</Data>\n"+ "<Signature>\n"+ "sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>\n"+ "</License>";InputStream inputStream = new ByteArrayInputStream(licensexml.getBytes());com.aspose.words.License license = new com.aspose.words.License();license.setLicense(inputStream);closeStream(inputStream);result = true;} catch (Exception e) {e.printStackTrace();System.out.println(" 验证aspose.word组件是否授权失败");}return result;}private static void closeStream(OutputStream outputStream)throws IOException {if (outputStream != null) {outputStream.close();}}private static void closeStream(InputStream inputStream) throws IOException {if (inputStream != null) {inputStream.close();}}public static void main(String[] args) throws IOException {try {String inPath = "D:/app/通知.docx";String outPath = "D:/app/文件_1.pdf";String outPdfAndWaterMarkPath = "D:/app/文件_2.pdf";String waterMarkPath = "D:/app/logo.jpg";docPdf(inPath, outPath, outPdfAndWaterMarkPath, waterMarkPath);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

java通过aspose实现word转pdf,加水印相关推荐

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

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

  2. 给现有的word和pdf加水印

    iTextSharp简单生成pdf和操作pdf添加水印 给word加水印,利用的是aspose.words

  3. (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 ...

  4. java word转pdf,docx4j转pdf,docx4j导出pdf乱码,docx4j导出pdf丢失插画和图片,aspose将word转pdf 一共两种方法

    前言:一共有docx4j转pdf,aspose转pdf两种方式,不需要设置模板!!! java转pdf目前本人使用有两种方法,下面是方法代码 ps:因为本人是云桌面开发,所以只作截图,具体代码需要自己 ...

  5. Java项目在Linux环境使用aspose把word转pdf乱码问题

    Java项目在Linux环境使用aspose把word转pdf乱码问题 一.问题 在项目中有word转pdf并展示的功能,在本地的windows环境下没有问题.但是放在Linux中部署运行,生成的pd ...

  6. java使用2种方法操作liberoffice把word转pdf,pdf加水印,java远程调用Linux执行命令

    文章目录 libreoffice下载地址 安装 (第一种) java调用 (第二种 推荐) java调用Linux命令转pdf java远程连接Linux执行命令(少数情况) linux安装windo ...

  7. Java使用aopse实现word转换pdf

    Java使用aopse实现word转换pdf 需要引用aspose包,引入操作我写了一个博客,地址如下 https://blog.csdn.net/weixin_46713508/article/de ...

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

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

  9. 利用aspose转word为PDF实现文档在线预览

    原始需求 java-web and 小程序 项目某页面,用户在支付前生成在线合同,并且签订电子签名,并且可以提供PDF在线预览和下载功能. 分析问题 既然是在线合同,肯定就需要靠模板来生成,这里我使用 ...

最新文章

  1. java八种语言_Java语言八种基本类型
  2. 【转载】OI生涯结束……在逸夫楼那些的日子里
  3. 关键词提取算法—TF/IDF算法
  4. log4j2 异步日志
  5. AngularJs 相应回车事件
  6. BZOJ 1444: [Jsoi2009]有趣的游戏 [AC自动机 高斯消元]
  7. 动态代理Java实现
  8. linux-wc命令
  9. ken沈oracle,甲骨文宣布推出Oracle商务软件
  10. Xilisoft iPad Magic Platinum for Mac一键下载在线视频并将其转换为 iPad?
  11. android studio简单的密码日记本,实现增删改查功能
  12. Sql Server 2012 Enterprise Edition 企业版 迅雷 下载地址
  13. RGB888与RGB565颜色对照表
  14. 论文阅读: (ECCV 2022) Content-Oriented Learned Image Compression
  15. 云上Java System Profiling与Debugging——蚂蚁金服观察与实践
  16. 重构之美-浴火重生的火凤凰CSS3【前传:Gradient】
  17. d3dcompiler_47.dll: Access is denied
  18. 1688商品详情接口
  19. 解决文字与图片始终不并排的问题
  20. echarts分段式的象形柱图

热门文章

  1. 基于MetaNetX网站的在线代谢敲除模拟与自动建模
  2. 基于LEACH和HEED的WSN路由协议研究与改进(Matlab代码实现)
  3. 基于微信小程序的线上教育商城小程序
  4. 成都卫星地图 高清最高级别19级 含标签数据信息叠加
  5. 淘宝旅行单日出票量超2.6万张创同类网站纪录
  6. enum枚举类的基本知识及使用技巧
  7. 【安利】看 Jabref 如何帮你高效管理文献
  8. proteus51仿真(3)——拨码开关
  9. 【1】基于ATmega 8A -PU 的蓝牙遥控电源插座设计——【2、阻容降压原理及电路】
  10. 在北京黑马学习Java(02)