Aspose.word for Java 页脚处插入二维码图片

使用产品:Aspose.word for Java
word文档页面末尾使用了分页符 或者分节符的时候,在左下角页脚处插入二维码图片的时候,无法插入。页脚的位置是足够放置二维码的

@SupportDhorde 您能否附上您的文档和代码,以便我们重现该问题? 我们将检查问题并为您提供更多信息。

你好 我这边上传附件 你帮忙看看 不支持doc的文件上传吗?

@zhangquan 您好。 您可以将DOC文件放入ZIP文件并上传。

肇庆二期弱电设计合同初稿-1221.zip (11.8 KB)
这个附件就符合 我写入二维码 第一页是不成功的。

@zhangquan @SupportDhorde

您好。请看一下这个代码示例。 此代码将二维码插入所有页面的页脚。

public class MainClass {
    public static void main(String[] args) throws Exception {
        License lic = new License();
        lic.setLicense("Aspose.Words.Java.lic");

        String qrCodeImagePath = "qrcode.png";
        int qrCodeWidth = 50;
        int qrCodeHeight = 50;
        int qrCodeLeftPositionInFooter = 10;
        int qrCodeTopPositionInFooter = 10;

        Document doc = new Document("肇庆二期弱电设计合同初稿-1221.doc");

        // remove all footers
        for (Section sect : doc.getSections()) {
            HeaderFooter footer;
            footer = sect.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_PRIMARY);
            if (footer != null)
                footer.remove();

            footer = sect.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_FIRST);
            if (footer != null)
                footer.remove();

            footer = sect.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_EVEN);
            if (footer != null)
                footer.remove();
        }

        DocumentBuilder builder = new DocumentBuilder(doc);
        PageSetup pageSetup = builder.getCurrentSection().getPageSetup();

        pageSetup.setDifferentFirstPageHeaderFooter(false);

        // Set FooterPrimary footer for the first section.
        // If footer is not specified for a section, it is taken from the previous section.
        builder.moveToHeaderFooter(HeaderFooterType.FOOTER_PRIMARY);

        // Insert QR code
        BufferedImage qrImage = ImageIO.read(new File(qrCodeImagePath));
        builder.insertImage(qrImage,
                RelativeHorizontalPosition.MARGIN, qrCodeLeftPositionInFooter,
                RelativeVerticalPosition.BOTTOM_MARGIN, qrCodeTopPositionInFooter,
                qrCodeWidth, qrCodeHeight,
                WrapType.NONE);

        doc.save("肇庆二期弱电设计合同初稿-1221.footer.doc");
    }
}

肇庆二期弱电设计合同初稿-1221.footer.zip (15.6 KB)

screenshot-20220127-114259.png (8.3 KB)
一样的 这个分页符下面还是没写进去啊。

@zhangquan 对不起,我附上了错误的doc文件。 这里是正确的文件。

肇庆二期弱电设计合同初稿-1221.footer.doc.zip (14.1 KB)
肇庆二期弱电设计合同初稿-1221.footer.Screenshot.png (13.5 KB)

但代码是正确的。你试过代码吗? 如果您仍然存在问题,请共享您的代码和输出DOC文件。

    for (Section sect : doc.getSections()) {
        HeaderFooter footer;
        footer = sect.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_PRIMARY);
        if (footer != null)
            footer.remove();

        footer = sect.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.HEADER_FIRST);
        if (footer != null)
            footer.remove();

        footer = sect.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_EVEN);
        if (footer != null)
            footer.remove();
    }

这部分代码是干嘛的 我没看懂?
PageSetup pageSetup = builder.getCurrentSection().getPageSetup();
pageSetup.setDifferentFirstPageHeaderFooter(false);
是我没加这一行代码导致第一页分页符没生成,

@zhangquan
我会尽力解释。

文档中的每个部分可以有 3 种页脚和页眉类型:

HeaderFooterTypes.docx (24.3 KB)

Aspose.Words for Java:

HeaderFooterType.HEADER_FIRST (#1)
HeaderFooterType.FOOTER_FIRST (#1)

HeaderFooterType.HEADER_PRIMARY (#2)
HeaderFooterType.FOOTER_PRIMARY (#2)

HeaderFooterType.HEADER_EVEN (#3)
HeaderFooterType.FOOTER_EVEN (#3)

PageSetup.DifferentFirstPageHeaderFooter控制复选框#1.
PageSetup.OddAndEvenPagesHeaderFooter控制复选框#2和#3.

HeaderFooter.IsLinkedToPreviousHeaderFooterCollection.linkToPrevious控制按钮#4.

在为您的文档中的所有页面制作相同的页脚之前,您需要关切断 复选框#1并删除所有页脚。
之后,您可以创建一个新的HeaderFooterType.FOOTER_PRIMARY页脚并将二维码在那里。此页脚将用于每一页。

关闭您的文档中的复选框#1:

PageSetup pageSetup = builder.getCurrentSection().getPageSetup();
pageSetup.setDifferentFirstPageHeaderFooter(false);

删除所有页脚:

for (Section sect : doc.getSections()) {
        HeaderFooter footer;
        footer = sect.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_PRIMARY);
        if (footer != null)
            footer.remove();

        footer = sect.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_FIRST);
        if (footer != null)
            footer.remove();

        footer = sect.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.FOOTER_EVEN);
        if (footer != null)
            footer.remove();
}