java通过aspose实现word转pdf,加水印
引入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,加水印相关推荐
- Java实现Excel和word转pdf加水印,复制及可用
Java实现Excel和word转pdf加水印,复制及可用 时隔大半年,之前朋友,今天突然找我说,他们有个需求要做这东西.想起来之前自己照着官方文档写,也走了不少坑.今天就索性写个,也为了方便以后使用 ...
- 给现有的word和pdf加水印
iTextSharp简单生成pdf和操作pdf添加水印 给word加水印,利用的是aspose.words
- (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 ...
- java word转pdf,docx4j转pdf,docx4j导出pdf乱码,docx4j导出pdf丢失插画和图片,aspose将word转pdf 一共两种方法
前言:一共有docx4j转pdf,aspose转pdf两种方式,不需要设置模板!!! java转pdf目前本人使用有两种方法,下面是方法代码 ps:因为本人是云桌面开发,所以只作截图,具体代码需要自己 ...
- Java项目在Linux环境使用aspose把word转pdf乱码问题
Java项目在Linux环境使用aspose把word转pdf乱码问题 一.问题 在项目中有word转pdf并展示的功能,在本地的windows环境下没有问题.但是放在Linux中部署运行,生成的pd ...
- java使用2种方法操作liberoffice把word转pdf,pdf加水印,java远程调用Linux执行命令
文章目录 libreoffice下载地址 安装 (第一种) java调用 (第二种 推荐) java调用Linux命令转pdf java远程连接Linux执行命令(少数情况) linux安装windo ...
- Java使用aopse实现word转换pdf
Java使用aopse实现word转换pdf 需要引用aspose包,引入操作我写了一个博客,地址如下 https://blog.csdn.net/weixin_46713508/article/de ...
- Springboot使用itext及documents4j操作pdf(word转pdf、pdf加水印(文字或图片,可指定位置)、pdf加密(打开密码,编辑密码))
pom.xml引入 <!-- pdf文档生成 --><dependency><groupId>com.documents4j</groupId>< ...
- 利用aspose转word为PDF实现文档在线预览
原始需求 java-web and 小程序 项目某页面,用户在支付前生成在线合同,并且签订电子签名,并且可以提供PDF在线预览和下载功能. 分析问题 既然是在线合同,肯定就需要靠模板来生成,这里我使用 ...
最新文章
- java八种语言_Java语言八种基本类型
- 【转载】OI生涯结束……在逸夫楼那些的日子里
- 关键词提取算法—TF/IDF算法
- log4j2 异步日志
- AngularJs 相应回车事件
- BZOJ 1444: [Jsoi2009]有趣的游戏 [AC自动机 高斯消元]
- 动态代理Java实现
- linux-wc命令
- ken沈oracle,甲骨文宣布推出Oracle商务软件
- Xilisoft iPad Magic Platinum for Mac一键下载在线视频并将其转换为 iPad?
- android studio简单的密码日记本,实现增删改查功能
- Sql Server 2012 Enterprise Edition 企业版 迅雷 下载地址
- RGB888与RGB565颜色对照表
- 论文阅读: (ECCV 2022) Content-Oriented Learned Image Compression
- 云上Java System Profiling与Debugging——蚂蚁金服观察与实践
- 重构之美-浴火重生的火凤凰CSS3【前传:Gradient】
- d3dcompiler_47.dll: Access is denied
- 1688商品详情接口
- 解决文字与图片始终不并排的问题
- echarts分段式的象形柱图