Changeset 1637 for trunk/docx4j/src/main/java/org/docx4j/openpackaging
- Timestamp:
- 08/07/11 10:34:49 (10 months ago)
- Location:
- trunk/docx4j/src/main/java/org/docx4j/openpackaging
- Files:
-
- 2 deleted
- 4 edited
-
io/ExternalResourceUtils.java (modified) (2 diffs)
-
io/LoadFromVFSZipFile.java (deleted)
-
io/SaveToVFSZipFile.java (deleted)
-
parts/WordprocessingML/MetafileEmfPart.java (modified) (2 diffs)
-
parts/WordprocessingML/MetafilePart.java (modified) (2 diffs)
-
parts/WordprocessingML/MetafileWmfPart.java (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/docx4j/src/main/java/org/docx4j/openpackaging/io/ExternalResourceUtils.java
r1232 r1637 1 1 package org.docx4j.openpackaging.io; 2 2 3 import org.apache.commons.vfs.FileContent; 4 import org.apache.commons.vfs.FileObject; 5 import org.apache.commons.vfs.FileSystemException; 6 import org.apache.commons.vfs.VFS; 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.net.MalformedURLException; 6 import java.net.URI; 7 import java.net.URISyntaxException; 8 import java.net.URL; 9 import java.util.Map; 10 import java.util.TreeMap; 11 7 12 import org.apache.log4j.Logger; 13 import org.docx4j.openpackaging.contenttype.ContentTypes; 8 14 import org.docx4j.openpackaging.exceptions.Docx4JException; 9 15 import org.docx4j.openpackaging.parts.ExternalTarget; 10 16 import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPart; 17 import org.docx4j.openpackaging.parts.WordprocessingML.ImageBmpPart; 11 18 import org.docx4j.openpackaging.parts.WordprocessingML.ImageGifPart; 12 19 import org.docx4j.openpackaging.parts.WordprocessingML.ImageJpegPart; 13 20 import org.docx4j.openpackaging.parts.WordprocessingML.ImagePngPart; 21 import org.docx4j.openpackaging.parts.WordprocessingML.ImageTiffPart; 22 import org.docx4j.openpackaging.parts.WordprocessingML.MetafileEmfPart; 23 import org.docx4j.openpackaging.parts.WordprocessingML.MetafileWmfPart; 14 24 15 25 public class ExternalResourceUtils { … … 20 30 21 31 private static Logger log = Logger.getLogger(ExternalResourceUtils.class); 32 protected static final Map<String, String> CONTENT_TYPE_MAP = new TreeMap<String, String>(); 33 34 static { 35 CONTENT_TYPE_MAP.put(ContentTypes.EXTENSION_BMP, ContentTypes.IMAGE_BMP); 36 CONTENT_TYPE_MAP.put(ContentTypes.EXTENSION_EMF, ContentTypes.IMAGE_EMF); 37 CONTENT_TYPE_MAP.put(ContentTypes.EXTENSION_GIF, ContentTypes.IMAGE_GIF); 38 CONTENT_TYPE_MAP.put(ContentTypes.EXTENSION_JPG_1, ContentTypes.IMAGE_JPEG); 39 CONTENT_TYPE_MAP.put(ContentTypes.EXTENSION_JPG_2, ContentTypes.IMAGE_JPEG); 40 CONTENT_TYPE_MAP.put(ContentTypes.EXTENSION_PNG, ContentTypes.IMAGE_PNG); 41 CONTENT_TYPE_MAP.put(ContentTypes.EXTENSION_TIFF, ContentTypes.IMAGE_TIFF); 42 CONTENT_TYPE_MAP.put("tif", ContentTypes.IMAGE_TIFF); 43 CONTENT_TYPE_MAP.put(ContentTypes.EXTENSION_WMF, ContentTypes.IMAGE_WMF); 44 } 22 45 23 46 public static BinaryPart getExternalResource(String absoluteTarget) throws Docx4JException { 24 47 URI targetURI = null; 48 URL targetURL = null; 49 int p = absoluteTarget.lastIndexOf('.'); 50 String fileExtension = (p > -1 ? absoluteTarget.substring(p+1).toLowerCase() : null); 51 String contentType = (fileExtension != null ? CONTENT_TYPE_MAP.get(fileExtension) : null); 52 BinaryPart binaryPart = null; 53 InputStream inStream = null; 25 54 try { 26 FileObject fo = VFS.getManager().resolveFile(absoluteTarget); 27 28 ExternalTarget externalTarget = new ExternalTarget(absoluteTarget); 29 30 // Assume it is a binary part, though there is no reason in principle 31 // that it couldn't be an XML part.. 32 BinaryPart bp; 33 if (absoluteTarget.toLowerCase().endsWith(".gif" )) { 34 35 bp = new ImageGifPart(externalTarget); 36 37 } else if (absoluteTarget.toLowerCase().endsWith(".jpeg" ) 38 || absoluteTarget.toLowerCase().endsWith(".jpg" )) { 39 40 bp = new ImageJpegPart(externalTarget); 41 42 } else if (absoluteTarget.toLowerCase().endsWith(".png" )) { 43 44 bp = new ImagePngPart(externalTarget); 45 46 } else { 47 log.warn("Using simple BinaryPart for " + absoluteTarget); 48 bp = new BinaryPart(externalTarget); 49 } 50 51 FileContent fc = fo.getContent(); 52 bp.setBinaryData(fc.getInputStream()); 53 54 return bp; 55 56 } catch (FileSystemException exc) { 57 exc.printStackTrace(); 58 throw new Docx4JException("Couldn't get FileObject", exc); 55 targetURI = new URI(absoluteTarget.replace('\\', '/')); 59 56 } 60 57 catch (URISyntaxException use) { 58 throw new Docx4JException("Invalid absolute Target: '" + absoluteTarget + "'", use); 59 } 60 try { 61 targetURL = targetURI.toURL(); 62 } catch (MalformedURLException mue) { 63 throw new Docx4JException("Invalid absolute Target: '" + absoluteTarget + "'", mue); 64 } 65 try { 66 inStream = targetURL.openStream(); 67 binaryPart = createBinaryPart(absoluteTarget, contentType); 68 binaryPart.setBinaryData(inStream); 69 } catch (IOException ioe) { 70 throw new Docx4JException("Could not load external resource: '" + absoluteTarget + "'", ioe); 71 } 72 return binaryPart; 61 73 } 62 74 75 protected static BinaryPart createBinaryPart(String absoluteTarget, String contentType) { 76 ExternalTarget externalTarget = new ExternalTarget(absoluteTarget); 77 BinaryPart ret = null; 78 if (ContentTypes.IMAGE_JPEG.equals(contentType)) 79 ret = new ImageJpegPart(externalTarget); 80 else if (ContentTypes.IMAGE_PNG.equals(contentType)) 81 ret = new ImagePngPart(externalTarget); 82 else if (ContentTypes.IMAGE_GIF.equals(contentType)) 83 ret = new ImageGifPart(externalTarget); 84 else if (ContentTypes.IMAGE_TIFF.equals(contentType)) 85 ret = new ImageTiffPart(externalTarget); 86 else if (ContentTypes.IMAGE_BMP.equals(contentType)) 87 ret = new ImageBmpPart(externalTarget); 88 else if (ContentTypes.IMAGE_EMF.equals(contentType)) 89 ret = new MetafileEmfPart(externalTarget); 90 else if (ContentTypes.IMAGE_WMF.equals(contentType)) 91 ret = new MetafileWmfPart(externalTarget); 92 else 93 ret = new BinaryPart(externalTarget); 94 95 return ret; 96 } 63 97 64 98 } -
trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/WordprocessingML/MetafileEmfPart.java
r1487 r1637 1 1 package org.docx4j.openpackaging.parts.WordprocessingML; 2 2 3 import java.io.File;4 import java.io.FileInputStream;5 import java.io.FileOutputStream;6 import java.io.OutputStream;7 8 3 import org.docx4j.openpackaging.exceptions.InvalidFormatException; 4 import org.docx4j.openpackaging.parts.ExternalTarget; 9 5 import org.docx4j.openpackaging.parts.PartName; 10 6 import org.docx4j.openpackaging.parts.relationships.Namespaces; 11 import org.docx4j.utils.BufferUtil;12 7 13 8 /** … … 61 56 } 62 57 58 public MetafileEmfPart(ExternalTarget externalTarget) { 59 super(externalTarget); 60 init(); 61 } 62 63 63 public void init() { 64 64 // Used if this Part is added to [Content_Types].xml -
trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/WordprocessingML/MetafilePart.java
r1487 r1637 2 2 3 3 import org.docx4j.openpackaging.exceptions.InvalidFormatException; 4 import org.docx4j.openpackaging.parts.ExternalTarget; 4 5 import org.docx4j.openpackaging.parts.PartName; 5 6 … … 16 17 } 17 18 19 public MetafilePart(ExternalTarget externalTarget) { 20 super(externalTarget); 21 } 18 22 19 23 } -
trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/WordprocessingML/MetafileWmfPart.java
r1078 r1637 1 1 package org.docx4j.openpackaging.parts.WordprocessingML; 2 2 3 import java.io.File;4 import java.io.FileInputStream;5 import java.io.FileNotFoundException;6 import java.io.FileOutputStream;7 import java.io.IOException;8 3 import java.io.InputStream; 9 import java.io.OutputStream;10 11 import javax.xml.transform.OutputKeys;12 import javax.xml.transform.Transformer;13 import javax.xml.transform.TransformerFactory;14 import javax.xml.transform.dom.DOMSource;15 import javax.xml.transform.stream.StreamResult;16 4 17 5 import net.arnx.wmf2svg.gdi.svg.SvgGdi; … … 19 7 20 8 import org.docx4j.openpackaging.exceptions.InvalidFormatException; 9 import org.docx4j.openpackaging.parts.ExternalTarget; 21 10 import org.docx4j.openpackaging.parts.PartName; 22 11 import org.docx4j.openpackaging.parts.relationships.Namespaces; … … 64 53 } 65 54 55 public MetafileWmfPart(ExternalTarget externalTarget) { 56 super(externalTarget); 57 init(); 58 } 59 66 60 public void init() { 67 61 // Used if this Part is added to [Content_Types].xml
Note: See TracChangeset
for help on using the changeset viewer.
