700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java实现word文档转换pdf文档并且添加水印功能使用插件Aspose.Words

java实现word文档转换pdf文档并且添加水印功能使用插件Aspose.Words

时间:2022-09-05 19:43:58

相关推荐

java实现word文档转换pdf文档并且添加水印功能使用插件Aspose.Words

前段时间,项目需要自动生成word文档,用WordFreeMarker生成word文档后,又要求生成的文档能在浏览器浏览,思来想去,把word文档转成pdf就好了,于是乎研究了一下。

将word文档转化为PDF是项目中常见的需求之一,目前主流的方法可以分为两大类,一类是利用各种Office应用进行转换,譬如Microsoft Office、WPS以及LiberOffice,另一种是利用各种语言提供的对于Office文档读取的接口(譬如Apache POI,jacob,docx4j,openoffice),这些要么收费,要么要装插件,要么转换之后样式走形,乱码等等。

我使用Aspose.Words for Java 可以导出复杂WORD PDF HTML 多种数据格式

结果我的测试发现只能转换doc和docx文档

官方下载地址:/words/java

我所用的版本是aspose-words-14.9.0-jdk16。文章最后附上插件破解版的下载地址以及源码

先看实现转换pdf文档的代码:

/*** word文档转pdf,并添加水印* @param inPath 需要转换的word文档地址* @param outPath 存放的pdf文档地址* @param watermarkText 水印内容*/public void wordTransformPdf(String inPath,String outPath,String watermarkText){/* //需要转换的word文档地址String inPath = "D:\\word\\测试.doc";//存放的pdf文档地址String outPath = "D:\\word\\test.pdf";*/FileOutputStream os =null;try {// 新建一个空白pdf文档File file = new File(outPath);os = new FileOutputStream(file);// Address是将要被转化的word文档Document doc = new Document(inPath);//先添加水印//insertWatermarkText(doc,"测试使用水印");insertWatermarkText(doc,watermarkText);//后赋值word内容doc.save(os, SaveFormat.PDF);} catch (Exception e) {e.printStackTrace();}finally{if(os!=null){try {os.close();} catch (IOException e) {e.printStackTrace();}}}}

转成PDF格式后,图片等样式均没有乱下面可以看到成果

接下来添加水印的源代码:

/**** @Title: insertWatermarkText* @Description: PDF生成水印* @author zz* @param doc 需要添加的pdf文档* @param watermarkText 水印内容* @throws Exception*/private static void insertWatermarkText(Document doc, String watermarkText) throws Exception {Shape watermark = new Shape(doc, ShapeType.TEXT_PLAIN_TEXT);//水印内容watermark.getTextPath().setText(watermarkText);//水印字体watermark.getTextPath().setFontFamily("宋体");//水印宽度watermark.setWidth(500);//水印高度watermark.setHeight(100);//旋转水印watermark.setRotation(-40);//水印颜色watermark.getFill().setColor(Color.lightGray);watermark.setStrokeColor(Color.lightGray);watermark.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);watermark.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE);watermark.setWrapType(WrapType.NONE);watermark.setVerticalAlignment(VerticalAlignment.CENTER);watermark.setHorizontalAlignment(HorizontalAlignment.CENTER);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);}}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));}

好了,附上下载地址/download/weixin_47301274/12668092

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。