Ignore:
Timestamp:
12/22/07 01:30:10 (4 years ago)
Author:
jharrop
Message:

Debug creating a new package, and make use JAXB to populate sample content.

File:
1 edited

Legend:

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

    r45 r65  
    2020package org.docx4j.openpackaging.packages; 
    2121 
    22 import java.io.InputStream; 
    23 import java.util.Iterator; 
    24  
    25 import org.docx4j.Namespaces; 
     22 
    2623import org.docx4j.openpackaging.parts.DocPropsCorePart; 
    2724import org.docx4j.openpackaging.parts.DocPropsExtendedPart; 
    2825import org.docx4j.openpackaging.parts.Part; 
     26import org.docx4j.openpackaging.parts.PartName; 
    2927import org.docx4j.openpackaging.parts.WordprocessingML.GlossaryDocumentPart; 
    3028import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart; 
    31 import org.dom4j.Document; 
    32 import org.dom4j.io.OutputFormat; 
    33 import org.dom4j.io.SAXReader; 
    34 import org.dom4j.io.XMLWriter; 
    35  
    36 import org.docx4j.openpackaging.exceptions.InvalidOperationException; 
    37  
    38  
    39 //import org.openxml4j.opc.Package; 
    40 //import org.openxml4j.opc.PackageAccess; 
    41 //import org.openxml4j.opc.PackagePart; 
    42 //import org.openxml4j.opc.PackageRelationship; 
    43 //import org.openxml4j.opc.PackageRelationshipCollection; 
    44 //import org.openxml4j.opc.PackageRelationshipTypes; 
    45 // 
    46 //import org.openxml4j.opc.PackageRelationshipCollection; 
    47 // 
    48 //import org.openxml4j.opc.PackagePartName; 
    49 // 
    50 //import au.com.xn.Packaging.*; 
     29import org.docx4j.openpackaging.parts.relationships.Namespaces; 
     30import org.docx4j.openpackaging.parts.relationships.RelationshipsPart; 
     31 
     32import org.docx4j.openpackaging.contenttype.ContentTypeManager; 
     33import org.docx4j.openpackaging.contenttype.ContentTypeManagerImpl; 
     34import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
     35 
     36 
    5137 
    5238 
     
    6046        // And a word document is exactly a WordProcessingML package     
    6147        // Which has a Main Document Part, and optionally, a Glossary Document Part 
     48 
     49        /* So its a Word doc if: 
     50         * 1. _rels/.rels tells you where to find an office document 
     51         * 2. [Content_Types].xml tells you that office document is    
     52         *    of content type application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml 
     53         
     54         * A minimal docx has: 
     55         *  
     56         * [Content_Types].xml containing: 
     57         * 1. <Default Extension="rels" ... 
     58         * 2. <Override PartName="/word/document.xml"... 
     59         *  
     60         * _rels/.rels with a target for word/document.xml 
     61         *  
     62         * word/document.xml 
     63         */ 
     64         
    6265         
    6366        // 20070812 - nb although io.LoadFromJCR will  
     
    205208        } 
    206209 
     210        public static WordprocessingMLPackage createTestPackage() throws InvalidFormatException { 
     211                 
     212                                 
     213                // Create a package 
     214                WordprocessingMLPackage p = new WordprocessingMLPackage(); 
     215 
     216                // Add a ContentTypeManager to it 
     217                ContentTypeManager ctm = new ContentTypeManagerImpl(); 
     218                p.setContentTypeManager(ctm); 
     219                 
     220 
     221                // Create main document part content 
     222                org.docx4j.jaxb.document.ObjectFactory factory = new org.docx4j.jaxb.document.ObjectFactory(); 
     223 
     224                org.docx4j.jaxb.document.Text  t = factory.createText(); 
     225                t.setValue("Hello world, from docx4j"); 
     226 
     227                org.docx4j.jaxb.document.R  run = factory.createR(); 
     228                run.getRunContent().add(t);              
     229                 
     230                org.docx4j.jaxb.document.P  para = factory.createP(); 
     231                para.getParagraphContent().add(run); 
     232                 
     233                org.docx4j.jaxb.document.Body  body = factory.createBody(); 
     234                body.getBlockLevelElements().add(para); 
     235                 
     236                org.docx4j.jaxb.document.Document wmlDocumentEl = factory.createDocument(); 
     237                wmlDocumentEl.setBody(body); 
     238                 
     239 
     240                // Create main document part 
     241                Part corePart = new org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart(new PartName("/word/document.xml")); 
     242                 
     243                // Put the content in the part 
     244                ((org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart)corePart).setDocumentObj(wmlDocumentEl); 
     245                 
     246                corePart.setContentType(new  org.docx4j.openpackaging.contenttype.ContentType( org.docx4j.openpackaging.contenttype.ContentTypes.WORDPROCESSINGML_DOCUMENT)); 
     247                corePart.setRelationshipType(Namespaces.DOCUMENT); 
     248                 
     249                // Make getMainDocumentPart() work 
     250                p.setPartShortcut(corePart, corePart.getRelationshipType()); 
     251                 
     252                // Create the PackageRelationships part  
     253                RelationshipsPart rp = new RelationshipsPart( new PartName("/_rels/.rels"), p ); 
     254                 
     255                // Make sure content manager knows how to handle .rels 
     256                ctm.addDefaultContentType("rels", org.docx4j.openpackaging.contenttype.ContentTypes.RELATIONSHIPS_PART); 
     257                 
     258                // Add it to the package 
     259                p.setRelationships(rp); 
     260                                 
     261                // Add the main document part to the package relationships 
     262                rp.addPart(corePart, p.getContentTypeManager()); 
     263                 
     264                // Return the new package 
     265                return p; 
     266 
     267                 
     268        } 
     269 
     270         
    207271} 
Note: See TracChangeset for help on using the changeset viewer.