使用产品:Aspose.word for Java
word文档页面末尾使用了分页符 或者分节符的时候,在左下角页脚处插入二维码图片的时候,无法插入。页脚的位置是足够放置二维码的
你好 我这边上传附件 你帮忙看看 不支持doc的文件上传吗?
您好。请看一下这个代码示例。 此代码将二维码插入所有页面的页脚。
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)
@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.IsLinkedToPrevious或HeaderFooterCollection.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();
}