packagecom.tythin.tyboot.core.util;importcom.aspose.words.Document;importcom.aspose.words.HeaderFooter;importcom.aspose.words.HeaderFooterType;importcom.aspose.words.HorizontalAlignment;importcom.aspose.words.Paragraph;importcom.aspose.words.RelativeHorizontalPosition;importcom.aspose.words.RelativeVerticalPosition;importcom.aspose.words.Section;importcom.aspose.words.Shape;importcom.aspose.words.ShapeType;importcom.aspose.words.VerticalAlignment;importcom.aspose.words.WrapType;importorg.springframework.cglib.core.internal.Function;/***@authorkuangQingLin

*@version1.0

* @date 2019/10/21/021 15:03

**/

public classWatermarkWordUtil {public static voidmain(String[] args) {//这个加水印文字方法可用

try{

Document document= new Document("C:\\Users\\Administrator\\Desktop\\人事合同.docx");

insertWatermarkText(document,"我的水印");//文件输出路径

document.save("C:\\Users\\Administrator\\Desktop\\人事合同1111.docx");

}catch(Exception e) {

e.printStackTrace();

}

}/*** 加水印方法

*

*@paramdoc word文件流

*@paramwatermarkText 水印内容*/

public static voidinsertWatermarkText(Document doc, String watermarkText) {//居中

insertWatermarkText(doc, watermarkText, new Function() {

@OverridepublicObject 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() {

@OverridepublicObject 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() {

@OverridepublicObject 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;

}

});

}private static voidinsertWatermarkText(Document doc, String watermarkText,

FunctionwatermaskPositionConfigFunc) {

Shape watermark= newShape(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 newRuntimeException(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= newParagraph(doc);

watermarkPara.appendChild(watermark);for(Section sect : doc.getSections()) {

insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_PRIMARY);

}

}private static voidinsertWatermarkIntoHeader(Paragraph watermarkPara, Section sect,intheaderType) {

HeaderFooter header=sect.getHeadersFooters().getByHeaderFooterType(headerType);if (header == null) {

header= newHeaderFooter(sect.getDocument(), headerType);

sect.getHeadersFooters().add(header);

}try{

header.appendChild(watermarkPara.deepClone(true));

}catch(Exception e) {throw newRuntimeException(e);

}

}

}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐