Ignore:
Timestamp:
01/16/10 07:52:34 (2 years ago)
Author:
jharrop
Message:

pptx4j: JAXB implementation of pptx - initial commit

Location:
trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages
Files:
2 edited

Legend:

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

    r854 r1044  
    2222package org.docx4j.openpackaging.packages; 
    2323 
     24import java.io.FileInputStream; 
     25import java.io.FileNotFoundException; 
     26import java.io.FileOutputStream; 
    2427import java.util.HashMap; 
    2528 
     29import javax.xml.bind.JAXBContext; 
     30import javax.xml.bind.JAXBElement; 
     31import javax.xml.bind.Marshaller; 
     32import javax.xml.bind.Unmarshaller; 
     33 
    2634import org.apache.log4j.Logger; 
     35import org.docx4j.convert.out.flatOpcXml.FlatOpcXmlCreator; 
    2736import org.docx4j.jaxb.Context; 
     37import org.docx4j.jaxb.NamespacePrefixMapperUtils; 
    2838import org.docx4j.openpackaging.Base; 
    2939import org.docx4j.openpackaging.contenttype.ContentTypeManager; 
     40import org.docx4j.openpackaging.exceptions.Docx4JException; 
    3041import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
     42import org.docx4j.openpackaging.io.LoadFromZipNG; 
     43import org.docx4j.openpackaging.io.SaveToZipFile; 
    3144import org.docx4j.openpackaging.parts.CustomXmlDataStoragePart; 
    3245import org.docx4j.openpackaging.parts.DocPropsCorePart; 
     
    4457 *  
    4558 * @author Jason Harrop 
    46  * @version 0.1 
    4759 */ 
    4860public class Package extends Base { 
     
    134146         
    135147        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         
    136228 
    137229        @Override 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages/WordprocessingMLPackage.java

    r1004 r1044  
    161161        public static WordprocessingMLPackage load(java.io.File docxFile) throws Docx4JException { 
    162162                 
    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); 
    192164        } 
    193165 
Note: See TracChangeset for help on using the changeset viewer.