我在从docx模板导入样式时遇到一些问题。 我想提取这些样式以将其应用到我的新文档中。 他们中的大多数都有编号。
我可以从模板中正确提取样式和编号。 我可以应用样式但不能应用编号作为我的wordMLPackage.getMainDocumentPart()。getNumberingDefinitionsPart()返回null
如果我尝试不导入NumberingDefinitionPart,那么我所有的风格都暗示将数字转向的列表视为没有数字的列表(这不是我想要的)。
我找不到实现它的方法,也没有设置新方法的方法。 这是我的代码。
public class ModuleToDocxGenerator {
private WordprocessingMLPackage wordMLPackage = null;
private XHTMLImporter xHTMLImporter = null;
private List<String> listStyle;
private ProjectType project;
private File file;
private Map<String, Object> mapElement = new HashMap<>();
private int taillePolice = 12;
private final String police = "Arial";
private Map<String, String> mapBookmark = new HashMap<>();
private int compteurIDBookMark = 1;
public void docxParser() {
// Récupération des styles du template
WordprocessingMLPackage wordMLPackage2 = null;
try {
wordMLPackage2 = WordprocessingMLPackage.load(new File("template.docx"));
} catch (Docx4JException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
wordMLPackage = WordprocessingMLPackage.createPackage();
} catch (InvalidFormatException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
MainDocumentPart tempDocPart = wordMLPackage2.getMainDocumentPart();
//add Style part
StyleDefinitionsPart sdp = tempDocPart.getStyleDefinitionsPart();
Styles tempStyle = null;
// Add numbering part
NumberingDefinitionsPart ndp = tempDocPart.getNumberingDefinitionsPart();
Numbering numbStyle = null;
try {
tempStyle = sdp.getContents();
numbStyle=ndp.getContents();
} catch (Docx4JException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
wordMLPackage.getMainDocumentPart().getNumberingDefinitionsPart().setJaxbElement(numbStyle);
wordMLPackage.getMainDocumentPart().getStyleDefinitionsPart().setJaxbElement(tempStyle);
有人能帮帮我吗?
答案 0 :(得分:0)
您需要以下内容:
// Add numbering part
NumberingDefinitionsPart ndp = new NumberingDefinitionsPart();
wordMLPackage.getMainDocumentPart().addTargetPart(ndp);
ndp.setJaxbElement( (Numbering) XmlUtils.unmarshalString(initialNumbering) );