- Timestamp:
- 01/16/10 07:52:34 (2 years ago)
- Location:
- trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages
- Files:
-
- 2 edited
-
Package.java (modified) (3 diffs)
-
WordprocessingMLPackage.java (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages/Package.java
r854 r1044 22 22 package org.docx4j.openpackaging.packages; 23 23 24 import java.io.FileInputStream; 25 import java.io.FileNotFoundException; 26 import java.io.FileOutputStream; 24 27 import java.util.HashMap; 25 28 29 import javax.xml.bind.JAXBContext; 30 import javax.xml.bind.JAXBElement; 31 import javax.xml.bind.Marshaller; 32 import javax.xml.bind.Unmarshaller; 33 26 34 import org.apache.log4j.Logger; 35 import org.docx4j.convert.out.flatOpcXml.FlatOpcXmlCreator; 27 36 import org.docx4j.jaxb.Context; 37 import org.docx4j.jaxb.NamespacePrefixMapperUtils; 28 38 import org.docx4j.openpackaging.Base; 29 39 import org.docx4j.openpackaging.contenttype.ContentTypeManager; 40 import org.docx4j.openpackaging.exceptions.Docx4JException; 30 41 import org.docx4j.openpackaging.exceptions.InvalidFormatException; 42 import org.docx4j.openpackaging.io.LoadFromZipNG; 43 import org.docx4j.openpackaging.io.SaveToZipFile; 31 44 import org.docx4j.openpackaging.parts.CustomXmlDataStoragePart; 32 45 import org.docx4j.openpackaging.parts.DocPropsCorePart; … … 44 57 * 45 58 * @author Jason Harrop 46 * @version 0.147 59 */ 48 60 public class Package extends Base { … … 134 146 135 147 protected DocPropsCustomPart docPropsCustomPart; 148 149 150 /** 151 * Convenience method to create a WordprocessingMLPackage 152 * or PresentationMLPackage 153 * from an existing File (.docx/.docxm, .ppxtx or Flat OPC .xml). 154 * 155 * @param docxFile 156 * The docx file 157 */ 158 public static Package load(java.io.File docxFile) throws Docx4JException { 159 160 if (docxFile.getName().endsWith(".xml")) { 161 162 org.docx4j.convert.in.FlatOpcXmlImporter xmlPackage; 163 try { 164 Unmarshaller u = Context.jcXmlPackage.createUnmarshaller(); 165 u.setEventHandler(new org.docx4j.jaxb.JaxbValidationEventHandler()); 166 167 org.docx4j.xmlPackage.Package wmlPackageEl = (org.docx4j.xmlPackage.Package)((JAXBElement)u.unmarshal( 168 new javax.xml.transform.stream.StreamSource(new FileInputStream(docxFile.getAbsolutePath())))).getValue(); 169 170 xmlPackage = new org.docx4j.convert.in.FlatOpcXmlImporter( wmlPackageEl); 171 } catch (Exception e) { 172 log.error(e); 173 throw new Docx4JException("Couldn't load xml from " + docxFile.getAbsolutePath(), e); 174 } 175 return xmlPackage.get(); 176 } 177 178 // LoadFromZipFile loader = new LoadFromZipFile(); 179 LoadFromZipNG loader = new LoadFromZipNG(); 180 // return (WordprocessingMLPackage)loader.get(docxFile); 181 FileInputStream fis = null; 182 try { 183 fis = new FileInputStream(docxFile); 184 } catch (FileNotFoundException e) { 185 log.error(e); 186 throw new Docx4JException("Couldn't load file from " + docxFile.getAbsolutePath(), e); 187 } 188 return loader.get(fis); 189 } 190 191 /** 192 * Convenience method to save a WordprocessingMLPackage 193 * or PresentationMLPackage to a File. 194 * 195 * @param docxFile 196 * The docx file 197 */ 198 public void save(java.io.File docxFile) throws Docx4JException { 199 200 if (docxFile.getName().endsWith(".xml")) { 201 202 // Create a org.docx4j.wml.Package object 203 FlatOpcXmlCreator worker = new FlatOpcXmlCreator(this); 204 org.docx4j.xmlPackage.Package pkg = worker.get(); 205 206 // Now marshall it 207 JAXBContext jc = Context.jcXmlPackage; 208 try { 209 Marshaller marshaller=jc.createMarshaller(); 210 211 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 212 NamespacePrefixMapperUtils.setProperty(marshaller, 213 NamespacePrefixMapperUtils.getPrefixMapper()); 214 215 marshaller.marshal(pkg, new FileOutputStream(docxFile)); 216 } catch (Exception e) { 217 throw new Docx4JException("Error saving Flat OPC XML", e); 218 } 219 return; 220 } 221 222 SaveToZipFile saver = new SaveToZipFile(this); 223 saver.save(docxFile); 224 } 225 226 227 136 228 137 229 @Override -
trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages/WordprocessingMLPackage.java
r1004 r1044 161 161 public static WordprocessingMLPackage load(java.io.File docxFile) throws Docx4JException { 162 162 163 if (docxFile.getName().endsWith(".xml")) { 164 165 org.docx4j.convert.in.FlatOpcXmlImporter xmlPackage; 166 try { 167 Unmarshaller u = Context.jcXmlPackage.createUnmarshaller(); 168 u.setEventHandler(new org.docx4j.jaxb.JaxbValidationEventHandler()); 169 170 org.docx4j.xmlPackage.Package wmlPackageEl = (org.docx4j.xmlPackage.Package)((JAXBElement)u.unmarshal( 171 new javax.xml.transform.stream.StreamSource(new FileInputStream(docxFile.getAbsolutePath())))).getValue(); 172 173 xmlPackage = new org.docx4j.convert.in.FlatOpcXmlImporter( wmlPackageEl); 174 } catch (Exception e) { 175 log.error(e); 176 throw new Docx4JException("Couldn't load xml from " + docxFile.getAbsolutePath(), e); 177 } 178 return (WordprocessingMLPackage)xmlPackage.get(); 179 } 180 181 // LoadFromZipFile loader = new LoadFromZipFile(); 182 LoadFromZipNG loader = new LoadFromZipNG(); 183 // return (WordprocessingMLPackage)loader.get(docxFile); 184 FileInputStream fis = null; 185 try { 186 fis = new FileInputStream(docxFile); 187 } catch (FileNotFoundException e) { 188 log.error(e); 189 throw new Docx4JException("Couldn't load docx from " + docxFile.getAbsolutePath(), e); 190 } 191 return (WordprocessingMLPackage)loader.get(fis); 163 return (WordprocessingMLPackage)Package.load(docxFile); 192 164 } 193 165
Note: See TracChangeset
for help on using the changeset viewer.
