2016-06-10 21 views
0

Ich habe Probleme beim Importieren von Formatvorlagen aus einer docx-Vorlage. Ich möchte diese Stile extrahieren, um sie auf mein neues Dokument anzuwenden. Die meisten von ihnen haben eine Nummerierung.Vorlagevorlage mit Auflistung importieren: getNumberingDefinitionsPart() gibt null für WordprocessingMLPackage.createPackage() zurück

Ich kann den Stil und die Nummerierung korrekt aus Vorlage extrahieren. Ich kann Stile anwenden kann aber t gelten als meine wordMLPackage.getMainDocumentPart Nummerierung(). GetNumberingDefinitionsPart()

null zurück, wenn ich versuche, nicht NumberingDefinitionPart, alle meine Stile mit Nummer wiederum impliziert Eintrag zu importieren als Liste zu betrachten, ohne Nummer (und das ist nicht was ich will).

Ich kann keinen Weg finden, es zu installieren, und es gibt keine Methode, um eine neue zu setzen. Hier ist mein Code.

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); 

Könnte mir bitte jemand helfen?

Antwort