注:官网是真的慢,而且因为比较冷门,中文文档也比较少,看文档挺费劲。
还有一点,官网文档只有最新版本的,如果是之前版本,没有地方找文档,比较头疼。
aspose是一家软件公司,支持word,excel,ppt,pdf等文档的操作,甚至连outlook邮件,visio都支持。
官网文档就很好,
Document document = new Document(fileUrl);
// 创建文本水印
TextStamp textStamp = new TextStamp("水印内容");
textStamp.setOpacity(0.5); // 透明度
textStamp.setRotate(1);
textStamp.getTextState().setFont(FontRepository.findFont("黑体"));
textStamp.getTextState().setFontSize(18);
textStamp.getTextState().setForegroundColor(com.aspose.pdf.Color.getGray());
textStamp.setHorizontalAlignment(HorizontalAlignment.Center); // 水平居中
textStamp.setVerticalAlignment(VerticalAlignment.Center); // 垂直居中
textStamp.getTextState().setRotation(15); // 文本旋转15度(默认是顺时针)
textStamp.getTextState().setOpacity(0.5); // 文本透明度
// 添加水印到每一页 注:这里要从1开始
for (int i = 1; i <= pdfDocument.getPages().size(); i++) {
document.getPages().get_Item(i).addStamp(textStamp);
}
document.save(outUrl);
这就奇怪了,都是官网例子,怎么还会有边框呢?
解决方案:
1、去掉透明度设置。
2、设置前景色。
textStamp.setOpacity(0.5); // 透明度 这一行去掉
// 如果没有这一行加这一行
textStamp.getTextState().setForegroundColor(com.aspose.pdf.Color.getGray());
但是有个问题,去掉透明度后如果客户有透明度的需求怎么办?
例如要128灰色。不加透明度颜色太深,调节色值看上去浅一些实际和透明产生的变浅效果不一样(用argb透明度也不生效)。目前是选了个近似的色值,期待完美解决方案。
官网给的例子直接就能用,而且兼容doc和docx,很给力:
Document doc = new Document(inFilePath);
TextWatermarkOptions textWatermarkOptions = new TextWatermarkOptions();
textWatermarkOptions.setFontFamily("黑体");
textWatermarkOptions.setFontSize(18f);
textWatermarkOptions.setColor(new Color(0,128,256));
textWatermarkOptions.setLayout(WatermarkLayout.HORIZONTAL);
textWatermarkOptions.isSemitrasparent(true);
doc.getWatermark().setText("doc 水印", textWatermarkOptions);
doc.save(outFilePath);
注:而且生成的真的是水印(不可编辑),其他工具如poi生成的实际相当于加了个图,是可以删掉的,没有任何意义。
实测word水印有边框。
解决方案:
1、透明度设置为false。
2、字体颜色调整为稍微浅一点的颜色。(因为没有透明度的加持,原定颜色会深些)
textWatermarkOptions.setColor(new Color(156,156,156)); // 颜色:灰色(#808080)
textWatermarkOptions.setLayout(WatermarkLayout.HORIZONTAL); // 水平
// 透明度:50%(设置透明度字体会有边框,因此关闭) 改为将字体颜色调浅 统一为156
textWatermarkOptions.isSemitrasparent(false); //
aspose官网给的是这个类RenderingWatermark,但是没找到,估计是版本问题。
商用软件,功能强大但是收费,也算是比较冷门。正因为冷门,如果掌握了就更有价值,因为可参考的资料太少,很大程度靠经验的积累和寻找可用文档的能力,熟练运用aspose一定很有用。
1、外网网速慢。
2、文档少,不好找例子。他们文档又不全。
用的是TextStamp。
例如,aspose-cells版本号是21.11,那么肯定要找21.11对应的文档。
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-cells</artifactId>
<version>21.11</version>
</dependency>
aspose-cells 21.11版本对应文档:
因篇幅问题不能全部显示,请点此查看更多更全内容