Aspose.word for java 如何在每页指定的任意坐标添加一段文字

谢谢老师,调试后已符合预期

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