引入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. 用jQuery实现文件的上传,后台为spring+mybatis
  2. let definitions are not supported by current javascript
  3. 前端学习(1274):Vue路由管理器
  4. 微信你scope 参数错误 php,微信开发: scope参数错误或没有scope权限解决方法
  5. eclipes创建一个web项目web.xml不能自动更新的原因(web.xml和@WebServlet的作用)
  6. python fillna,Pandas之Fillna填充缺失数据的方法
  7. Shell Scipt 命令行带参数,输出log
  8. oracle连接实例怎么连接,连接ORACLE实例
  9. Android 创建与解析XML(三)—— Sax方式
  10. scala学习笔记(四)样本类与模式匹配
  11. js html 加背景图片,利用js实现随机背景显示,每次访问背景图都不一样
  12. C语言打印ASCII码
  13. POJO、PO、DTO、DAO、BO、VO需要搞清楚的概念 1
  14. ipv6的127位掩码如何表示_网络基础 | 浅谈IP地址与子网掩码
  15. Ubuntu移动硬盘下载
  16. 网易微专业python全栈工程师_Python 的工作已经饱和?那是因为你只会 Python
  17. 通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺
  18. php手机号正则替换中间四位
  19. 【Uniapp框架】快速开发自己一款APP应用,如何将Uniapp项目快速打包成APP应用
  20. Just For Fun(乐者为王)——Linux创始人

热门文章

  1. zt_vage的delete大量数据方法
  2. 频谱仪的RBW带宽和VBW带宽
  3. android自动生成dimens适配文件,无需Java工具类
  4. 基于Web系统的测试方法(常见测试案例)-经验
  5. UPC10525: Dove 打扑克
  6. cyber security and phish detection
  7. tcgames使用有延迟_用tcgames安卓投屏到电脑键鼠玩《和平精英》怎么设置稳定90帧不延迟?...
  8. python时 module 'matplotlib' has no attribute 'figure'解决
  9. 如何停止关闭您的Android手机的屏幕
  10. 你真了解什么是非标机械设计吗?资深工程师为你解答