java aspose 给Word添加水印
java 使用 aspose 添加水印
首先编写添加水印方法
/*** 加文字水印方法** @param doc word文件流* @param watermarkText 水印内容*/public static void insertWatermarkText(Document doc, String watermarkText) {// 居中insertWatermarkText( doc, watermarkText, new Function<Shape, Object>() {@Overridepublic Object apply(Shape watermark) {// Place the watermark in the page center.watermark.setRelativeHorizontalPosition( RelativeHorizontalPosition.PAGE );watermark.setRelativeVerticalPosition( RelativeVerticalPosition.PAGE );watermark.setWrapType( WrapType.NONE );watermark.setVerticalAlignment( VerticalAlignment.CENTER );watermark.setHorizontalAlignment( HorizontalAlignment.CENTER );return null;}} );// 顶部insertWatermarkText( doc, watermarkText, new Function<Shape, Object>() {@Overridepublic Object apply(Shape watermark) {watermark.setRelativeHorizontalPosition( RelativeHorizontalPosition.MARGIN );watermark.setRelativeVerticalPosition( RelativeVerticalPosition.MARGIN );watermark.setWrapType( WrapType.NONE );// 我们需要自定义距离顶部的高度watermark.setVerticalAlignment( VerticalAlignment.TOP );watermark.setHorizontalAlignment( HorizontalAlignment.CENTER );// watermark.setTop(120);return null;}} );//尾部insertWatermarkText( doc, watermarkText, new Function<Shape, Object>() {@Overridepublic Object apply(Shape watermark) {watermark.setRelativeHorizontalPosition( RelativeHorizontalPosition.MARGIN );watermark.setRelativeVerticalPosition( RelativeVerticalPosition.MARGIN );watermark.setWrapType( WrapType.NONE );// 我们需要自定义距离顶部的高度watermark.setVerticalAlignment( VerticalAlignment.BOTTOM );watermark.setHorizontalAlignment( HorizontalAlignment.CENTER );// 设置距离顶部的高度// watermark.setTop(480);return null;}} );}
方法2
//插入文本水印private static void insertWatermarkText(Document doc, String watermarkText, Function<Shape, Object> watermaskPositionConfigFunc) {Shape watermark = new Shape( doc, ShapeType.TEXT_PLAIN_TEXT );watermark.getTextPath().setText( watermarkText );// 这里设置为宋体可以保证在转换为PDF时中文不是乱码.watermark.getTextPath().setFontFamily( "WeiRuanYaHei" );//WeiRuanYaHei 宋体try {// 水印大小watermark.setWidth( 150 );watermark.setHeight( 30 );} catch (Exception e) {throw new RuntimeException( e );}// 左下到右上watermark.setRotation( -20 );//字体RGB颜色final String colorStr = "EE8262";watermark.getFill().setColor( new java.awt.Color( Integer.parseInt( colorStr, 16 ) ) );watermark.setStrokeColor( new java.awt.Color( Integer.parseInt( colorStr, 16 ) ) );watermaskPositionConfigFunc.apply( watermark );Paragraph watermarkPara = new Paragraph( doc );watermarkPara.appendChild( watermark );for (Section sect : doc.getSections()) {insertWatermarkIntoHeader( watermarkPara, sect, HeaderFooterType.HEADER_PRIMARY );}}
方法3:
private static void insertWatermarkIntoHeader(Paragraph watermarkPara, Section sect, int headerType) {HeaderFooter header = sect.getHeadersFooters().getByHeaderFooterType( headerType );if (header == null) {header = new HeaderFooter( sect.getDocument(), headerType );sect.getHeadersFooters().add( header );}try {header.appendChild( watermarkPara.deepClone( true ) );} catch (Exception e) {throw new RuntimeException( e );}}
测试插入:
1、生成word插入水印
/*** 插入文本 和水印** @throws Exception*/@Testpublic void testSaveWord() throws Exception {// Create a Document objectDocument doc = new Document();// Create a DocumentBuilder objectDocumentBuilder builder = new DocumentBuilder( doc );java.util.List<String> list = new ArrayList<>();list.add( "How to Create a Rich Word Document5?" );list.add( "How to Create a Rich Word Document25?" );list.add( "How to Create a Rich Word Document35?" );list.add( "How to Create a Rich Word Document45?" );// Specify font formattingFont font = builder.getFont();font.setSize( 18 );font.setBold( true );font.setColor( Color.BLACK );font.setName( "Arial" );builder.write( "How to Create a Rich Word Document?" );builder.insertBreak( BreakType.LINE_BREAK );// Start the paragraphfont.setSize( 12 );font.setBold( false );ParagraphFormat paragraphFormat = builder.getParagraphFormat();paragraphFormat.setFirstLineIndent( 12 );paragraphFormat.setKeepTogether( true );builder.write( "This article shows how to create a Word document containing text, images and lists." );builder.insertBreak( BreakType.LINE_BREAK );for (String str : list) {font.setSize( 18 );font.setBold( true );font.setColor( Color.BLACK );font.setName( "Arial" );builder.writeln( str );builder.insertBreak( BreakType.LINE_BREAK );}insertWatermarkText( doc, "我的水印" );// Save the documentdoc.save( "D:\\temp\\Rich Word Document.docx" );}
2、给已有的word添加水印
@Testpublic void testWater() {//这个加水印文字方法可用try {Document document = new Document( "D:\\zyw\\web\\temp\\1537734281026211840.doc" );insertWatermarkText( document, "我的水印" );//文件输出路径document.save( "D:\\zyw\\web\\temp\\1537734281026211840-11.doc" );} catch (Exception e) {e.printStackTrace();}}
java aspose 给Word添加水印相关推荐
- Java poi给word添加水印,字体,颜色,倾斜度等
之前使用poi-tl进行word模板生成word文件,在生成word之后,现在需求需要给word添加一个水印的功能,先贴图生成后的效果,部分内容涉及公司信息打了马赛克, 贴一下代码 /*** @aut ...
- aspose给word添加水印
第一步:引入依赖 <dependency><groupId>com.aspose</groupId><artifactId>aspose-words&l ...
- java aspose 统计word文档正文页码总数
LayoutCollector 布局收集器 方法:getEndPageIndex(Node node) //获取当前节点所在页码 //统计正文总页码 //真实页码数 int realPa ...
- 如何用java代码给Word文档添加水印?
为防止非法使用.定义所有权.显示文档状态等多种目的,在 Word 文档中添加水印.在本文中,您将学习如何使用 Java 为 Word 文档添加水印.文章将分别演示如何将文字和图片水印插入到Word文档 ...
- java使用jacob给word添加水印
1.操作word需要的jacobjar包和dll文件. 2.jar包放到项目中WEB-INF\lib中,或者 mvn install:install-file -Dfile=D:\Users\qiuz ...
- java为word添加水印,图片水印和文字水印
java为word添加水印,图片水印和文字水印 jdk1.5及以上 所需jar包:Spire.Office.jar 或 Spire.Doc.jar jar包下载:https://www.e-icebl ...
- Java项目在Linux环境使用aspose把word转pdf乱码问题
Java项目在Linux环境使用aspose把word转pdf乱码问题 一.问题 在项目中有word转pdf并展示的功能,在本地的windows环境下没有问题.但是放在Linux中部署运行,生成的pd ...
- Word处理控件Aspose.Words功能演示:从 Java 中的 Word 文档中提取图像
图像通常用于表示 Word 文档中的重要信息.在文本旁边包含图像使内容更具吸引力.在某些情况下,您可能需要以编程方式提取嵌入在 Word 文档中的图像.为此,本文介绍了如何使用 Java 从 Word ...
- java word 添加水印图片_Java添加Word文本水印和图片水印
水印是一种常用于各种文档的声明.防伪手段,一般可设置文字水印或者加载图片作为水印.以下内容将分享通过Java编程给Word文档添加水印效果的方法,即 文本水印 图片水印 使用工具:Free Spire ...
- Word处理控件Aspose.Words功能演示:使用Java合并MS Word文档
在各种情况下,可能需要合并多个MS Word文档,例如减少文档数量,在单个文件中保留相似种类的内容(即发票)等.许多在线应用程序使您可以合并两个或多个MS Word文档但是,您可能需要在自己的Web或 ...
最新文章
- 据lovecherry的一步一步学Remoting序列文章学习.net Remoting日记(2)
- php动态删除输入框,jQuery实现动态添加和删除input框实例代码
- 在 PostgreSQL 中使用码农很忙 IP 地址数据库
- Http(s)与后台交互方式
- mysql空间是什么格式_MySQL数据类型 - 空间数据类型 (6)
- springboot并发上传文件_springboot实现单文件和多文件上传
- angular --开发环境搭建及项目创建
- 服务器64位还是32位系统好,云服务器64位还是32位
- 单层感知机实现或运算
- 我的Android进阶之旅------>解决:Failed to create ‘XXX\build\outputs\apk\xxx.apks‘: 拒绝访问。
- SpringBoot2.X 单元测试(Junit4.X) 基本配置
- 应届生如何准备校招【研发岗】
- 阅读这篇文章,假设你不知道的傅里叶变换,然后来掐死我
- TCP粘包/拆包问题
- 怎么打开苹果Mac电脑科学型计算器
- 出租车不需要司机了?带你体验无人驾驶出租车!|『智能产品家』第三期
- 拟推荐全省文物系统先进_关于对拟表彰全省文博系统文化遗产工作先进集体和先进工作者公示的公告...
- 物料称重管理系统灵活构建个性化应用场景
- 泛微 OA 集成平台介绍
- 百度电视云试水搅局智能投影市场的背后