合并Word文档后无法在第二个目录中生成正确的页码

时间:2019-08-22 20:18:57

标签: java docx4j

我的任务是合并两个Word文档。以下是要满足的条件。

  1. 合并两个word文档(例如d1和d2)-完成
  2. 我能够在页脚中生成正确的页码(例如,生成的文档中的d1..123和&d2..12,我可以看到需要的12345)-完成
  3. 我能够生成2个TOC(例如D1-TOC1,然后包含TOC2,然后包含其内容)-完成
  4. 但是我想在第一个目录中看到第123页,而在第二个目录中我应该看到第4,5页,但是我看到的第12页。

请有人帮我提供所需的代码。请查找以下内容:提前谢谢。.

  

TOC1

     

a .... 1

     

b .... 2

     

c .... 3

     

文档1所有其他页面

     

     

     

TOC2

     

p ... 1

     

q ... 2(此处应将P和Q页号显示为4和5,而不是1和2)

     

记录2个其他所有页面

     

     

TocGenerator tocGenerator1 = new TocGenerator(f);
            tocGenerator1.generateToc( 0, " TOC \\o \"0-3\" \\h \\z \\u ", false);
            tocGenerator1.updateToc(false);
            TocGenerator tocGenerator = new TocGenerator(s);
            SdtBlock block = tocGenerator.generateToc( 0, " TOC \\o \"0-3\" \\h \\z \\u ", true);
            //tocGenerator.generateToc(false);
            tocGenerator.updateToc(false);
            List body = s.getMainDocumentPart().getJAXBNodesViaXPath("//w:body", false);
            for(Object b : body){
                List filhos = ((org.docx4j.wml.Body)b).getContent();
                for(Object k : filhos)
                    f.getMainDocumentPart().addObject(k);
            }
        /*
         * ImportXHTMLProperties.setProperty(
         * "docx4j-ImportXHTML.Element.Heading.MapToStyle", true); 

TocGenerator
         * tocGenerator1 = new TocGenerator(s); tocGenerator1. SdtBlock sdtBlock1 =
         * tocGenerator1.generateToc(0, "TOC \\o \"0-3\" \\h \\z \\u", false);
         * tocGenerator1.updateToc(true);
         */
            List blips = s.getMainDocumentPart().getJAXBNodesViaXPath("//a:blip", false);
            for(Object el : blips){
                try {
                    CTBlip blip = (CTBlip) el;
                    RelationshipsPart parts = s.getMainDocumentPart().getRelationshipsPart();
                    Relationship rel = parts.getRelationshipByID(blip.getEmbed());
                    RelationshipsPart docRels = f.getMainDocumentPart().getRelationshipsPart();
                    rel.setId(null);
                    docRels.addRelationship(rel);
                    blip.setEmbed(rel.getId());                 f.getMainDocumentPart().addTargetPart(s.getParts().getParts().get(new PartName("/word/"+rel.getTarget())));

0 个答案:

没有答案