为有中文需求的客户提供多渠道中文技术支持.

Thu Apr 21, 2022 2:48 am

word文档页眉插入图片时,第一页插入失败,后续页数页眉插入成功,请问如何解决?
代码如下:
for (int ii = 0; ii < document.getSections().getCount(); ii++) {
Section section = document.getSections().get(ii);
HeaderFooter header = section.getHeadersFooters().getHeader();
DocPicture headerPicture = null;
// 添加段落到页眉
headerPicture = header.addParagraph().appendPicture(codeImgByte);
headerPicture.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
headerPicture.setWidth(50f);
headerPicture.setHeight(50f);
Float width = section.getPageSetup().getClientWidth();
Float height = section.getPageSetup().getHeaderDistance();
headerPicture.setHorizontalPosition(-40f);
headerPicture.setVerticalPosition(28f);
headerPicture.setTextWrappingStyle(TextWrappingStyle.Behind);
headerPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text);
}
文档如下:

fengyun_23
 
Posts: 13
Joined: Fri Oct 08, 2021 3:33 am

Thu Apr 21, 2022 6:49 am

您好,

感谢您的咨询。
引起第一页没有成功添加页眉的原因:您的docx文档的页眉页脚设置了“不同的第一个页面”。这个设置将使第一页和其他页面的页眉页脚区分开来,需要单独为其设置。
页眉设置.png


针对您的文档,将所有页面设置相同的页眉页脚,解决方案如下:
先判断是否section页眉页脚设置了“不同的第一个页面”: section.getPageSetup().getDifferentFirstPageHeaderFooter()
如果返回true,说明设置了,就需要将其改为false: section.getPageSetup().setDifferentFirstPageHeaderFooter(false);
Code: Select all
 for (int ii = 0; ii < document.getSections().getCount(); ii++) {
            Section section = document.getSections().get(ii);
            if (section.getPageSetup().getDifferentFirstPageHeaderFooter()) {
                section.getPageSetup().setDifferentFirstPageHeaderFooter(false);
                HeaderFooter header = section.getHeadersFooters().getHeader();
                DocPicture headerPicture = null;
                headerPicture = header.addParagraph().appendPicture(image);
                headerPicture.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
                headerPicture.setWidth(50f);
                headerPicture.setHeight(50f);
                Float width = section.getPageSetup().getClientWidth();
                Float height = section.getPageSetup().getHeaderDistance();
                headerPicture.setHorizontalPosition(-40f);
                headerPicture.setVerticalPosition(28f);
                headerPicture.setTextWrappingStyle(TextWrappingStyle.Behind);
                headerPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text);
            }else{
               HeaderFooter header = section.getHeadersFooters().getHeader();
                DocPicture headerPicture = null;
                headerPicture = header.addParagraph().appendPicture(image);
                headerPicture.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
                headerPicture.setWidth(50f);
                headerPicture.setHeight(50f);
                Float width = section.getPageSetup().getClientWidth();
                Float height = section.getPageSetup().getHeaderDistance();
                headerPicture.setHorizontalPosition(-40f);
                headerPicture.setVerticalPosition(28f);
                headerPicture.setTextWrappingStyle(TextWrappingStyle.Behind);
                headerPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text);
}}


Sincerely,
Amy
E-iceblue support team
User avatar

amy.zhao
 
Posts: 2766
Joined: Wed Jun 27, 2012 8:50 am

Mon Apr 25, 2022 9:46 am

您好,这个还有其他方案吗?若第一页设置了不同页眉,第二页页眉的内容与第一页页眉的内容不同,按上面解决方案会导致改变了第一页的内容

fengyun_23
 
Posts: 13
Joined: Fri Oct 08, 2021 3:33 am

Mon Apr 25, 2022 10:01 am

您好,

您可以通过 HeaderFooter firstHeader = section.getHeadersFooters().getFirstPageHeader();获取第一页的页眉对象进行设置其内容。对于其他页面使用 HeaderFooter header = section.getHeadersFooters().getHeader();获取其页眉对象来设置内容。
参考代码如下:
Code: Select all
  if (section.getPageSetup().getDifferentFirstPageHeaderFooter()) {
                HeaderFooter firstHeader = section.getHeadersFooters().getFirstPageHeader();
                HeaderFooter header = section.getHeadersFooters().getHeader();
                DocPicture headerPicture = new DocPicture(document);
                headerPicture.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
                headerPicture.setWidth(50f);
                headerPicture.setHeight(50f);
                Float width = section.getPageSetup().getClientWidth();
                Float height = section.getPageSetup().getHeaderDistance();
                headerPicture.setHorizontalPosition(-40f);
                headerPicture.setVerticalPosition(28f);
                headerPicture.setTextWrappingStyle(TextWrappingStyle.Behind);
                headerPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text);
                firstHeader.addParagraph().appendPicture(image);
                header.addParagraph().appendPicture(image);
            }


Sincerely,
Amy
E-iceblue support team
User avatar

amy.zhao
 
Posts: 2766
Joined: Wed Jun 27, 2012 8:50 am

Mon Apr 25, 2022 10:10 am

谢谢

fengyun_23
 
Posts: 13
Joined: Fri Oct 08, 2021 3:33 am

Tue Apr 26, 2022 2:09 am

不客气!
有任何关于我们产品的问题,请联系我们。

Sincerely,
Amy
E-iceblue support team
User avatar

amy.zhao
 
Posts: 2766
Joined: Wed Jun 27, 2012 8:50 am

Return to 中文技术支持