谢谢老师,调试后已符合预期
1 Like
老师您好,我将word文档中第二页设置为横向,运行代码时无法在第二页添加上文字
code.docx (21 KB)
source document.docx (10.4 KB)
Expected results.docx (17.7 KB)
@craspose 出现此问题的原因是第二部分从第一部分继承了页眉/页脚。 所以第二部分实际上并不包含页眉/页脚。 但是,如果没有指定类型的标头,则 insertWatermarkIntoHeader 会生成标头。 要解决此问题,只需添加标准水印和自定义水印即可。 像这样更改您的代码:
Document document = new Document("C:\\Temp\\in.docx");
// Add custom watermark first.
generateMultiWaterMark(document, "warterMark");
// Add standard watermark.
TextWatermarkOptions opt = new TextWatermarkOptions();
opt.setColor(Color.black);
opt.setFontSize(12);
opt.setLayout(WatermarkLayout.HORIZONTAL);
document.getWatermark().setText("你好-2024-01-16", opt);
for (Shape s : (Iterable<Shape>)document.getChildNodes(NodeType.SHAPE, true))
{
if (s.getName().startsWith("PowerPlusWaterMarkObject") || s.getName().startsWith("WordPictureWatermark"))
{
s.setWrapType(WrapType.NONE);
s.getTextPath().setFontFamily(FONT_FAMILY);
s.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE);
s.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);
s.setVerticalAlignment(com.aspose.words.VerticalAlignment.DEFAULT);
s.setHorizontalAlignment(com.aspose.words.HorizontalAlignment.DEFAULT);
s.setLeft(450);
s.setTop(20);
}
}
document.save("C:\\Temp\\out.docx");
老师您好,调试后横向页面可以成功添加文字,但是文字的位置处于页面的中间位置,能否将文字的位置调整到右上角
@craspose 在代码中指定形状的绝对位置。 尝试指定对齐方式:
// Add standard watermark.
TextWatermarkOptions opt = new TextWatermarkOptions();
opt.setColor(Color.black);
opt.setFontSize(12);
opt.setLayout(WatermarkLayout.HORIZONTAL);
document.getWatermark().setText("你好-2024-01-16", opt);
for (Shape s : (Iterable<Shape>)document.getChildNodes(NodeType.SHAPE, true))
{
if (s.getName().startsWith("PowerPlusWaterMarkObject") || s.getName().startsWith("WordPictureWatermark"))
{
s.setWrapType(WrapType.NONE);
s.getTextPath().setFontFamily(FONT_FAMILY);
s.setRelativeVerticalPosition(RelativeVerticalPosition.MARGIN);
s.setRelativeHorizontalPosition(RelativeHorizontalPosition.MARGIN);
s.setVerticalAlignment(VerticalAlignment.TOP);
s.setHorizontalAlignment(HorizontalAlignment.RIGHT);
}
}