700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java aspose 给Word添加水印

java aspose 给Word添加水印

时间:2020-05-07 22:11:06

相关推荐

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();}}

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