Ignore:
Timestamp:
03/12/08 08:10:43 (4 years ago)
Author:
jharrop
Message:

Ability to marshall to a structure /pkg:package/pkg:part/pkg:xmlData, mimicking Word 2007's ActiveDocument?.WordOpenXML. This seems a better idea than the old wordDocument.


File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages/WordprocessingMLPackage.java

    r176 r177  
    190190         * our main document and style definition parts. 
    191191         *  
    192          * For now, I've just edited it a little to accept our parts wrapped 
    193          * in a <w:wordDocument> element.  Since that's a completely 
    194          * arbitrary format, it may be better in due course to process 
    195          * pck:package/pck:part 
     192         * I've adapted the stylesheet to process the 
     193         * pck:package/pck:part stuff emitted by Word 2007. 
    196194         *  
    197195         */ 
    198196         
    199197                // so, put the 2 parts together into a single document  
    200         // The JAXB object org.docx4j.wml.WordDocument is 
     198        // The JAXB object org.docx4j.wml.Package is 
    201199        // custom built for this purpose. 
    202200         
    203         // Create a org.docx4j.wml.WordDocument object 
     201        // Create a org.docx4j.wml.Package object 
    204202        org.docx4j.wml.ObjectFactory factory = new org.docx4j.wml.ObjectFactory(); 
    205         org.docx4j.wml.WordDocument wd = factory.createWordDocument(); 
     203        org.docx4j.wml.Package pkg = factory.createPackage(); 
     204         
    206205        // Set its parts 
     206         
    207207        // .. the main document part 
     208        org.docx4j.wml.Package.Part pkgPartDocument = factory.createPackagePart(); 
     209                 
    208210                MainDocumentPart documentPart = getMainDocumentPart();  
    209                 org.docx4j.wml.Document wmlDocumentEl = (org.docx4j.wml.Document)documentPart.getJaxbElement();          
    210         wd.setDocument(wmlDocumentEl); 
     211                 
     212        pkgPartDocument.setName(documentPart.getPartName().getName()); 
     213        pkgPartDocument.setContentType(documentPart.getContentType() ); 
     214                 
     215        org.docx4j.wml.Package.Part.XmlData XmlDataDoc = factory.createPackagePartXmlData(); 
     216         
     217                org.docx4j.wml.Document wmlDocumentEl = (org.docx4j.wml.Document)documentPart.getJaxbElement(); 
     218                 
     219                XmlDataDoc.setDocument(wmlDocumentEl); 
     220                pkgPartDocument.setXmlData(XmlDataDoc); 
     221                pkg.getPart().add(pkgPartDocument); 
     222                                 
    211223        // .. the style part 
     224        org.docx4j.wml.Package.Part pkgPartStyles = factory.createPackagePart(); 
     225 
    212226        org.docx4j.openpackaging.parts.WordprocessingML.StyleDefinitionsPart stylesPart = documentPart.getStyleDefinitionsPart(); 
     227         
     228        pkgPartDocument.setName(stylesPart.getPartName().getName()); 
     229        pkgPartDocument.setContentType(stylesPart.getContentType() ); 
     230         
     231        org.docx4j.wml.Package.Part.XmlData XmlDataStyles = factory.createPackagePartXmlData(); 
     232         
    213233        org.docx4j.wml.Styles styles = (org.docx4j.wml.Styles)stylesPart.getJaxbElement(); 
    214         wd.setStyles(styles); 
     234         
     235                XmlDataStyles.setStyles(styles); 
     236                pkgPartStyles.setXmlData(XmlDataStyles); 
     237                pkg.getPart().add(pkgPartStyles);        
     238         
    215239        // Now marshall it 
    216240                JAXBContext jc = Context.jc; 
     
    218242                org.w3c.dom.Document doc = org.docx4j.XmlUtils.neww3cDomDocument(); 
    219243 
    220                 marshaller.marshal(wd, doc); 
     244                marshaller.marshal(pkg, doc); 
    221245                 
    222246                log.info("wordDocument created for PDF rendering!"); 
     
    249273                javax.xml.transform.Templates template = tfactory.newTemplates( 
    250274                                new javax.xml.transform.stream.StreamSource(is)); 
    251                  
    252275                // Use the template to create a transformer 
    253276                javax.xml.transform.Transformer xformer = template.newTransformer(); 
     
    269292                xformer.setParameter("substituterInstance", fontSubstituter); 
    270293                xformer.setParameter("fontFamilyStack", fontFamilyStack); 
    271                  
    272294                 
    273295                //DEBUGGING  
Note: See TracChangeset for help on using the changeset viewer.