aspose.word for java 如何在每页指定的任意坐标添加一段文字
@craspose 您可以插入水印,然后根据需要更改其位置。 请看下面的代码:
Document doc = new Document();
TextWatermarkOptions opt = new TextWatermarkOptions();
opt.setColor(Color.red);
opt.setLayout(WatermarkLayout.HORIZONTAL);
doc.getWatermark().setText("I am a cool watermark", opt);
// Get watermark shapes and move them at the desired position.
for (Shape s : (Iterable<Shape>)doc.getChildNodes(NodeType.SHAPE, true))
{
if (s.getName().startsWith("PowerPlusWaterMarkObject") || s.getName().startsWith("WordPictureWatermark"))
{
s.setWrapType(WrapType.NONE);
s.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE);
s.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);
s.setVerticalAlignment(VerticalAlignment.DEFAULT);
s.setHorizontalAlignment(HorizontalAlignment.DEFAULT);
s.setLeft(10);
s.setTop(10);
}
}
doc.save("C:\\Temp\\out.docx");
感谢老师回复,我这边进行尝试一下
1 Like
您好,这是调试代码
Document doc = new Document();
TextWatermarkOptions opt = new TextWatermarkOptions();
opt.setColor(Color.red);
opt.setFontSize(30);
opt.setLayout(WatermarkLayout.HORIZONTAL);
doc.getWatermark().setText("你好-2024-01-10", opt);
// Get watermark shapes and move them at the desired position.
for (Shape s : (Iterable<Shape>)doc.getChildNodes(NodeType.SHAPE, true))
{
if (s.getName().startsWith("PowerPlusWaterMarkObject") || s.getName().startsWith("WordPictureWatermark"))
{
s.setWrapType(WrapType.NONE);
s.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE);
s.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);
s.setVerticalAlignment(VerticalAlignment.DEFAULT);
s.setHorizontalAlignment(HorizontalAlignment.DEFAULT);
s.setLeft(400);
s.setTop(10);
}
}
doc.save("C:\\Temp\\out.docx");
感谢老师,我再进行调试一下
1 Like
老师您好,原因找到了,“你好-2024-01-10” 默认生成的字体为Calibri,我把它改成宋体就行了,请问能基于您提供的代码上设置一下字体吗
@craspose 您成功找到问题的原因真是太好了。 您可以使用以下代码来设置水印文本的字体:
Document doc = new Document();
TextWatermarkOptions opt = new TextWatermarkOptions();
opt.setColor(Color.red);
opt.setFontSize(30);
opt.setFontFamily("SimSun");
opt.setLayout(WatermarkLayout.HORIZONTAL);
doc.getWatermark().setText("你好-2024-01-10", opt);
感谢老师,调试后已经能够符合预期结果
1 Like
您好,当我使用设置页眉上边距为2.40cm,运行上述代码时,word文档的页数会由之前的两页变成三页,请问如何调整
source document.docx (10.4 KB)
Actual results.docx (18.4 KB)
Expected results.docx (17.7 KB)