创建一个新节以在 Docx4J 中.docx文件



我正在尝试在文件中插入一个新部分.docx。插入的节的功能应与通过文字处理器添加的节相同。我正在使用 Docx4j 库来完成此任务。

这是我用来创建新的.docx文件的代码,并且:

  1. 添加包含运行和文本的段落
  2. 向文档添加"连续"部分
  3. 添加另一个段落,包含运行和文本
  4. 将文档保存到文件

    WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
    // create new paragraph with a run containing text and add it to the document.
    P paragraph1 = objectFactory.createP(); // create new paragraph
    R run1 = objectFactory.createR(); // create new run 
    Text text1 = objectFactory.createText(); // create text
    text1.setValue("This is text in paragraph 1 that should be located in section 1.");
    run1.getContent().add(text1); // add text ton the run
    paragraph1.getContent().add(run1); // add run to paragraph
    wordMLPackage.getMainDocumentPart().addObject(paragraph1); // add to main document part
    // create new section and add it to the document
    SectPr sectPr = objectFactory.createSectPr(); // create new section
    SectPr.Type sectPrType = objectFactory.createSectPrType();
    sectPrType.setVal("continuous"); // "continuous" means no page break before section
    sectPr.setType(sectPrType);
    wordMLPackage.getMainDocumentPart().addObject(sectPr); // add section to document part
    // proceed to create another paragraph with a run containing text.
    P paragraph2= objectFactory.createP(); // create new paragraph
    R run2 = objectFactory.createR(); // create new run 
    Text text2 = objectFactory.createText(); // create text
    text2.setValue("This is text in paragraph 2 that should be located in section 2.");
    run2.getContent().add(text2); // add text ton the run
    paragraph2.getContent().add(run2); // add run to paragraph
    wordMLPackage.getMainDocumentPart().addObject(paragraph2); // add to main document part
    wordMLPackage.save(new java.io.File("should contain_two_sections.docx")); // save
    

创建的文件包含代码中定义的段落。该部分要么丢失,要么只是无法通过文字处理器"正常"插入部分(即。LibreOffice Writer 或 Microsoft Word) 可以。

我已经通读了 Docx4J 文档、诸如此类的问题以及 GitHub 存储库中的 Docx4J 示例,但我还没有找到任何工作示例来添加所描述的功能。

你正在将你的sectPr作为同级添加到顶级段落中;相反,它应该在w:p/w:pPr中。

为了避免这样的错误,你应该使用docx4j webapp或Helper AddIn从工作的Word docx生成Java代码。

作为旁注,允许将sectPr作为正文中的最后一个元素,但该元素是使用setSectPr添加

相关内容

  • 没有找到相关文章

最新更新