Docx4j 在页眉同时 添加logo图片和文字,logo图片显示在左边,文字显示在右边

Docx4j在页眉 同时加入图片和文字有两种实现方式,一种是用HTML写一个模板,通过模板一次加入,另一种是通过docx4j直接操作

一、Html方式 上代码

public class Docx4JSample {

   

    public static void main(String []args) throws Exception{

    Docx4JSample docx4jSample = new Docx4JSample();

    

    WordprocessingMLPackage worMLPackage = docx4jSample.createWordpreocessMLPackage();

    

    MainDocumentPart mpart = worMLPackage.getMainDocumentPart();

    

    ObjectFactory factory = Context.getWmlObjectFactory();

    

    Relationship relationship1 = docx4jSample.createHeaderPart(worMLPackage, mpart

    factory, true, "3");

    

    docx4jSample.createHeaderReference(worMLPackage, mpart, factory, relationship1);


    

    docx4jSample.saveWordPackage(worMLPackage, new File("./testpaper.docx"));

    }


    

    public void createHeaderReference(WordprocessingMLPackage wordprocessingMLPackage,MainDocumentPart t,

    ObjectFactory factory, Relationship relationship) throws Exception{

    List<SectionWrapper> sections = wordprocessingMLPackage.getDocumentModel().getSections();

    SectPr sectPr =sections.get(sections.size()-1).getSectPr();


    if (sectPr == null ){

    sectPr = factory.createSectPr();

    t.addObject(sectPr);    

    sections.get(sections.size()-1).setSectPr(sectPr);

    }

    

    HeaderReference headerReference = factory.createHeaderReference();

    headerReference.setId(relationship.getId()); //这里关联RelationShip

    headerReference.setType(HdrFtrRef.DEFAULT);


    sectPr.getEGHdrFtrReferences().add(headerReference);

    }


   //创建页眉    

    public Relationship createHeaderPart(WordprocessingMLPackage wordprocessingMLPackage,

    MainDocumentPart mpartDocumentPart , ObjectFactory factory , boolean isUnderLine ,

    String underLineSize) throws Exception{

    HeaderPart headerPart = new HeaderPart();

    

    Relationship relationship = mpartDocumentPart.addTargetPart(headerPart);

    String headerString="<html><body  width=\"90%\"><table width=\"100%\">    <tr width=\"20%\">    "

    + "<th align=\"left\"><img width=40 height=40 src=\"https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/"

    + "static/superman/img/logo/bd_logo1_31bdc765.png\"></th><th align=\"right\">"

    + "页眉右边的文字<br>这里还可以起一行</th>    </tr>    </table></body></html>";

        headerPart.addAltChunk(AltChunkType.Xhtml, headerString.getBytes());

    return relationship;

    }


    public void saveWordPackage(WordprocessingMLPackage wordPackage , File file) throws Exception{

wordPackage.save(file);

    }



}

结果如下:


另一种方式 见下一篇文章



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
和页脚怎么做? 对于设置页眉和页脚,你可以使用docx4j中提供的HeaderFooter类来实现。以下是一个示例代码: ``` // 创建一个新的文档 WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage(); // 获取main document part MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart(); // 创建一个新页面 ObjectFactory objectFactory = Context.getWmlObjectFactory(); Body body = objectFactory.createBody(); documentPart.setJaxbElement(objectFactory.createDocument(body)); CTSectPr section = objectFactory.createCTSectPr(); body.setSectPr(section); // 添加页眉和页脚 HeaderPart headerPart = new HeaderPart(); headerPart.setPackage(wordMLPackage); headerPart.setJaxbElement(headerObjectFactory.createHeader()); documentPart.addTargetPart(headerPart); FooterPart footerPart = new FooterPart(); footerPart.setPackage(wordMLPackage); footerPart.setJaxbElement(footerObjectFactory.createFooter()); documentPart.addTargetPart(footerPart); // 在页眉添加文字 HeaderPart headerPart = documentPart.getHeaderFooterPolicy().getDefaultHeader(); Text text = objectFactory.createText(); text.setValue("This is the header text"); P paragraph = objectFactory.createP(); paragraph.getContent().add(text); headerPart.setJaxbElement(headerObjectFactory.createHdr()); headerPart.getContent().add(paragraph); // 在页脚中添加页码 FooterPart footerPart = documentPart.getHeaderFooterPolicy().getDefaultFooter(); P paragraph = objectFactory.createP(); org.docx4j.wml.Text pageNumber = new org.docx4j.wml.Text(); pageNumber.setValue("Page "); paragraph.getContent().add(pageNumber); SimpleField page = new SimpleField(); page.setInstr(" PAGE "); paragraph.getContent().add(objectFactory.createFldSimple(page)); footerPart.setJaxbElement(footerObjectFactory.createFtr()); footerPart.getContent().add(paragraph); ``` 上述代码创建了一个新的Word文档,并添加了一个包含页眉和页脚的页面。然后它在页眉添加了一段文字,并在页脚中添加了页码。你可以根据自己的需求对代码进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值