Changeset 1667 for trunk/docx4j/src/main/java/org/docx4j/openpackaging
- Timestamp:
- 09/20/11 12:34:05 (8 months ago)
- Location:
- trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages
- Files:
-
- 2 edited
-
OpcPackage.java (modified) (2 diffs)
-
WordprocessingMLPackage.java (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages/OpcPackage.java
r1467 r1667 22 22 package org.docx4j.openpackaging.packages; 23 23 24 import java.io.BufferedInputStream; 24 25 import java.io.FileInputStream; 25 26 import java.io.FileNotFoundException; 26 27 import java.io.FileOutputStream; 28 import java.io.IOException; 29 import java.io.InputStream; 27 30 import java.util.HashMap; 28 31 … … 166 169 * The docx file 167 170 */ 168 public static OpcPackage load(java.io.File docxFile) throws Docx4JException { 169 170 if (docxFile.getName().endsWith(".xml")) { 171 172 org.docx4j.convert.in.FlatOpcXmlImporter xmlPackage; 173 try { 174 Unmarshaller u = Context.jcXmlPackage.createUnmarshaller(); 175 u.setEventHandler(new org.docx4j.jaxb.JaxbValidationEventHandler()); 176 177 org.docx4j.xmlPackage.Package wmlPackageEl = (org.docx4j.xmlPackage.Package)((JAXBElement)u.unmarshal( 178 new javax.xml.transform.stream.StreamSource(new FileInputStream(docxFile.getAbsolutePath())))).getValue(); 179 180 xmlPackage = new org.docx4j.convert.in.FlatOpcXmlImporter( wmlPackageEl); 181 } catch (Exception e) { 182 log.error(e); 183 throw new Docx4JException("Couldn't load xml from " + docxFile.getAbsolutePath(), e); 184 } 185 return xmlPackage.get(); 186 } 187 188 // LoadFromZipFile loader = new LoadFromZipFile(); 189 LoadFromZipNG loader = new LoadFromZipNG(); 190 // return (WordprocessingMLPackage)loader.get(docxFile); 191 FileInputStream fis = null; 192 try { 193 fis = new FileInputStream(docxFile); 194 } catch (FileNotFoundException e) { 195 log.error(e); 171 public static OpcPackage load(final java.io.File docxFile) throws Docx4JException { 172 173 try { 174 if (docxFile.getName().endsWith(".xml")) { 175 return OpcPackage.load(new FileInputStream(docxFile),false); 176 } 177 return OpcPackage.load(new FileInputStream(docxFile),true); 178 } catch (final FileNotFoundException e) { 179 OpcPackage.log.error(e); 196 180 throw new Docx4JException("Couldn't load file from " + docxFile.getAbsolutePath(), e); 197 181 } 198 return loader.get(fis); 182 } 183 184 /** 185 * Convenience method to create a WordprocessingMLPackage 186 * or PresentationMLPackage 187 * from an inputstream (.docx/.docxm, .ppxtx or Flat OPC .xml). 188 * It detects the convenient format inspecting two first bytes of stream (magic bytes). 189 * For office 2007 'x' formats, these two bytes are 'PK' (same as zip file) 190 * 191 * @param inputStream 192 * The docx file 193 */ 194 public static OpcPackage load(final InputStream inputStream) throws Docx4JException{ 195 //try to detect the type of file using a bufferedinputstream 196 final BufferedInputStream bis = new BufferedInputStream(inputStream); 197 bis.mark(0); 198 final byte[] firstTwobytes=new byte[2]; 199 int read=0; 200 try { 201 read = bis.read(firstTwobytes); 202 bis.reset(); 203 } catch (final IOException e) { 204 throw new Docx4JException("Error reading from the stream", e); 205 } 206 if (read!=2){ 207 throw new Docx4JException("Error reading from the stream (no bytes available)"); 208 } 209 final boolean docxType = (firstTwobytes[0]=='P' && firstTwobytes[1]=='K'); 210 return OpcPackage.load(bis,docxType); 211 } 212 213 /** 214 * convenience method to load a word2007 document 215 * from an existing inputstream (.docx/.docxm, .ppxtx or Flat OPC .xml). 216 * 217 * @param is 218 * @param docxFormat 219 * @return 220 * @throws Docx4JException 221 */ 222 public static OpcPackage load(final InputStream is, final boolean docxFormat) throws Docx4JException { 223 if (docxFormat){ 224 final LoadFromZipNG loader = new LoadFromZipNG(); 225 return loader.get(is); 226 } 227 org.docx4j.convert.in.FlatOpcXmlImporter xmlPackage; 228 try { 229 final Unmarshaller u = Context.jcXmlPackage.createUnmarshaller(); 230 u.setEventHandler(new org.docx4j.jaxb.JaxbValidationEventHandler()); 231 232 final org.docx4j.xmlPackage.Package wmlPackageEl = (org.docx4j.xmlPackage.Package)((JAXBElement)u.unmarshal( 233 new javax.xml.transform.stream.StreamSource(is))).getValue(); 234 235 xmlPackage = new org.docx4j.convert.in.FlatOpcXmlImporter( wmlPackageEl); 236 } catch (final Exception e) { 237 OpcPackage.log.error(e); 238 throw new Docx4JException("Couldn't load xml from stream ",e); 239 } 240 return xmlPackage.get(); 199 241 } 200 242 -
trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages/WordprocessingMLPackage.java
r1604 r1667 25 25 import java.io.FileNotFoundException; 26 26 import java.io.FileOutputStream; 27 import java.io.InputStream; 27 28 import java.util.HashMap; 28 29 import java.util.Map; … … 173 174 174 175 /** 176 * Convenience method to create a WordprocessingMLPackage 177 * from an existing stream(.docx zip or .xml Flat OPC). 178 * 179 * @param docxFile 180 * The docx file 181 */ 182 public static WordprocessingMLPackage load(InputStream is) throws Docx4JException { 183 184 return (WordprocessingMLPackage)OpcPackage.load(is); 185 } 186 187 /** 175 188 * Convenience method to save a WordprocessingMLPackage 176 189 * to a File.
Note: See TracChangeset
for help on using the changeset viewer.
