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