Changeset 1637


Ignore:
Timestamp:
08/07/11 10:34:49 (10 months ago)
Author:
jharrop
Message:

Alberto's patch of 3 August.

  • The ConversionImageHandler?.handleImage is declared now as throwing a Doc4jException
  • I have removed the dependencies on vfs

If the ConversionImageHandler?.handleImage throws an Exception, it will be logged as an error in the AbstractWordXmlPicture?, but it won’t be propagated. I’m not sure, but I think that an exception in handleImage should not stop the conversion process.

Removing the dependencies on vfs:

org.docx4j.model.images.DefaultConversionImageHandler? has been replaced with the following hierarchy:

org.docx4j.model.images.AbstractConversionImageHandler?

-> org.docx4j.extras.vfs.VFSConversionImageHandler

-> org.docx4j.model.images.FileConversionImageHandler?

-> org.docx4j.convert.out.html.HTMLConversionImageHandler

-> org.docx4j.convert.out.pdf.viaXSLFO.PDFConversionImageHandler

  • VFSConversionImageHandler offers the old functionality based on VFS
  • FileConversionImageHandler? is based on plain File(s), this means that it won’t be able to handle such cases where the target directory is on an ftp-server (or something comparable).
  • HTMLConversionImageHandler. In HTMLSettings there is a new Setting ‘imageTargetURI’ that allows to define a prefix for the image URI. If it is set, HTMLConversionImageHandler will use it as an prefix for the image URI, otherwise the image URI will just be the image name. This behavior replaces fixImgSrcURL.
  • PDFConversionImageHandler will always use the absolute path of the file as the image URI.

Apart from this there is a new setting in AbstractConversionSettings? (‘imageIncludeUUID’) that allows to switch on or off the UUID (default is on)

org.docx4j.openpackaging.io.LoadFromVFSZipFile
org.docx4j.openpackaging.io.SaveToVFSZipFile and
org.docx4j.utils.VFSUtils

have been moved to org.docx4j.extras.vfs, there is no replacement for them.

org.docx4j.convert.in.Doc has been split in org.docx4j.convert.in.Doc (without convert(org.apache.commons.vfs.FileObject? in)) and org.docx4j.extras.vfs.VFSDoc (with the method)

org.docx4j.openpackaging.io.ExternalResourceUtils? now uses an URLConnection instead of VFS

If you put the stuff in org.docx4j.extras.vfs in docx4j-extras, you should be able to compile docx4j without the dependency on VFS.

Some additional changes:

  • A small detail: WordXmlPictureE20, checked blip.getEmbed() == null and blip.getLink() == null, but those getters would return an empty string.
Location:
trunk/docx4j/src
Files:
6 added
4 deleted
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/docx4j/src/main/java/org/docx4j/convert/in/Doc.java

    r515 r1637  
    2424import java.io.FileInputStream; 
    2525 
    26 import org.apache.commons.vfs.FileSystemException; 
    27 import org.apache.commons.vfs.FileType; 
    28 import org.apache.commons.vfs.FileTypeSelector; 
    29 import org.apache.commons.vfs.VFS; 
    30 import org.apache.commons.vfs.provider.local.LocalFile; 
    3126import org.apache.log4j.Logger; 
    3227import org.apache.poi.hwpf.HWPFDocument; 
    33 import org.apache.poi.hwpf.usermodel.*; 
    34 import org.docx4j.openpackaging.exceptions.Docx4JException; 
     28import org.apache.poi.hwpf.usermodel.CharacterRun; 
     29import org.apache.poi.hwpf.usermodel.Paragraph; 
     30import org.apache.poi.hwpf.usermodel.Range; 
     31import org.apache.poi.hwpf.usermodel.Section; 
     32import org.apache.poi.hwpf.usermodel.Table; 
     33import org.apache.poi.hwpf.usermodel.TableCell; 
     34import org.apache.poi.hwpf.usermodel.TableRow; 
    3535import org.docx4j.openpackaging.io.SaveToZipFile; 
    3636import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 
    3737import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart; 
    38 import org.docx4j.utils.VFSUtils; 
    3938 
    4039/** 
     
    7271//      public static boolean convert(org.apache.commons.vfs.FileObject in, 
    7372//      WordprocessingMLPackage out) throws Exception { 
    74          
    75         /** 
    76          * @param in 
    77          * @return 
    78          * @throws Exception 
    79          */ 
    80         public static WordprocessingMLPackage convert( 
    81                         org.apache.commons.vfs.FileObject in) throws Exception { 
    82  
    83                 LocalFile localCopy = null; 
    84                 if (!(in instanceof LocalFile)) { 
    85  
    86                         StringBuffer sb = new StringBuffer("file:///"); 
    87                         sb.append(System.getProperty("user.home")); 
    88                         sb.append("/.docx4j/tmp/"); 
    89                         sb.append(in.getName().getBaseName()); 
    90                         String tmpPath = sb.toString().replace('\\', '/'); 
    91  
    92                         try { 
    93                                 localCopy = (LocalFile) VFS.getManager().resolveFile(tmpPath); 
    94                                 localCopy.copyFrom(in, new FileTypeSelector(FileType.FILE)); 
    95                                 localCopy.close(); 
    96                         } catch (FileSystemException exc) { 
    97                                 exc.printStackTrace(); 
    98                                 throw new Docx4JException( 
    99                                                 "Could not create a temporary local copy", exc); 
    100                         } finally { 
    101                                 if (localCopy != null) { 
    102                                         try { 
    103                                                 localCopy.delete(); 
    104                                         } catch (FileSystemException exc) { 
    105                                                 exc.printStackTrace(); 
    106                                                 log.warn("Couldn't delete temporary file " + tmpPath); 
    107                                         } 
    108                                 } 
    109                         } 
    110                 } else { 
    111                         localCopy = (LocalFile) in; 
    112                 } 
    113  
    114                 String localPath = VFSUtils.getLocalFilePath(in); 
    115                 if (localPath == null) { 
    116                         throw new Docx4JException("Couldn't get local path"); 
    117                 } 
    118  
    119                 HWPFDocument doc = new HWPFDocument(new FileInputStream(localPath)); 
    120  
    121                 WordprocessingMLPackage out = WordprocessingMLPackage.createPackage(); 
    122                  
    123                 convert(doc, out); 
    124                  
    125                 return out; 
    126         } 
    12773 
    12874        /** 
  • trunk/docx4j/src/main/java/org/docx4j/convert/out/AbstractConversionSettings.java

    r1631 r1637  
    99public abstract class AbstractConversionSettings { 
    1010         
     11        public static final String IMAGE_INCLUDE_UUID = "imageIncludeUUID"; 
    1112        public static final String IMAGE_DIR_PATH = "imageDirPath"; 
    1213        public static final String IMAGE_HANDLER = "imageHandler"; 
     
    2930        } 
    3031 
     32        /** Should the image names be prefixed with an UUID to differentiate runs? Default: true 
     33         */ 
     34        public void setImageIncludeUUID(boolean imageIncludeUUID) { 
     35                settings.put(IMAGE_INCLUDE_UUID, Boolean.valueOf(imageIncludeUUID)); 
     36        } 
     37         
     38        public boolean isImageIncludeUUID() { 
     39                return (settings.containsKey(IMAGE_INCLUDE_UUID) ?  
     40                                (Boolean)settings.get(IMAGE_INCLUDE_UUID) :  
     41                                true); 
     42        } 
     43 
    3144        public void setImageHandler(ConversionImageHandler imageHandler) { 
    3245                settings.put(IMAGE_HANDLER, imageHandler); 
  • trunk/docx4j/src/main/java/org/docx4j/convert/out/html/AbstractHtmlExporter.java

    r1631 r1637  
    283283        public static class HtmlSettings extends AbstractConversionSettings { 
    284284                 
     285                public static final String IMAGE_TARGET_URI = "imageTargetUri"; 
    285286                public static final String CONDITIONAL_COMMENTS = "conditionalComments"; 
    286287                public static final String FONT_FAMILY_STACK = "fontFamilyStack"; 
     
    302303                 
    303304                public void setConditionalComments(Boolean conditionalComments) { 
    304                         settings.put("conditionalComments", conditionalComments); 
     305                        settings.put(CONDITIONAL_COMMENTS, conditionalComments); 
    305306                } 
    306307                 
    307308                public void setFontFamilyStack(boolean val) { 
    308                         settings.put("fontFamilyStack", new Boolean(val)); 
     309                        settings.put(FONT_FAMILY_STACK, new Boolean(val)); 
    309310                } 
    310311 
     
    317318                                 
    318319                public void setUserCSS(String val) { 
    319                         settings.put("userCSS", val); 
     320                        settings.put(USER_CSS, val); 
    320321                } 
    321322 
    322323                public void setUserScript(String val) { 
    323                         settings.put("userScript", val); 
     324                        settings.put(USER_SCRIPT, val); 
    324325                } 
    325326 
    326327                public void setUserBodyTop(String val) { 
    327                         settings.put("userBodyTop", val); 
     328                        settings.put(USER_BODY_TOP, val); 
    328329                } 
    329330 
    330331                public void setUserBodyTail(String val) { 
    331                         settings.put("userBodyTail", val); 
     332                        settings.put(USER_BODY_TAIL, val); 
    332333                }                
    333334                 
     335                public void setImageTargetUri(String imageTargetUri) { 
     336                        settings.put(IMAGE_TARGET_URI, imageTargetUri); 
     337                } 
     338                 
     339                public String getImageTargetUri() { 
     340                        return (String)settings.get(IMAGE_TARGET_URI); 
     341                } 
    334342        } 
    335343         
  • trunk/docx4j/src/main/java/org/docx4j/convert/out/html/HtmlExporterNG2.java

    r1631 r1637  
    2323import java.io.StringReader; 
    2424import java.util.HashMap; 
    25 import java.util.List; 
    2625 
    2726import javax.xml.bind.Unmarshaller; 
     
    3837import org.docx4j.convert.out.PageBreak; 
    3938import org.docx4j.jaxb.Context; 
     39import org.docx4j.model.SymbolModel.SymbolModelTransformState; 
    4040import org.docx4j.model.TransformState; 
    41 import org.docx4j.model.SymbolModel.SymbolModelTransformState; 
    42 import org.docx4j.model.images.DefaultConversionImageHandler; 
    4341import org.docx4j.model.styles.StyleTree; 
     42import org.docx4j.model.styles.StyleTree.AugmentedStyle; 
    4443import org.docx4j.model.styles.Tree; 
    45 import org.docx4j.model.styles.StyleTree.AugmentedStyle; 
    4644import org.docx4j.model.table.TableModel.TableModelTransformState; 
    4745import org.docx4j.openpackaging.exceptions.Docx4JException; 
    4846import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 
    4947import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart; 
    50 import org.docx4j.wml.Body; 
    5148import org.docx4j.wml.PPr; 
    5249import org.docx4j.wml.RPr; 
     
    228225                boolean privateImageHandler = false; 
    229226                if (htmlSettings.getImageHandler() == null) { 
    230                         htmlSettings.setImageHandler(htmlSettings.getImageDirPath() != null ?  
    231                                         new DefaultConversionImageHandler(htmlSettings.getImageDirPath()) :  
    232                                         new DefaultConversionImageHandler()); 
     227                        htmlSettings.setImageHandler( 
     228                                new HTMLConversionImageHandler(htmlSettings.getImageDirPath(),  
     229                                                                                           htmlSettings.getImageTargetUri(),  
     230                                                                                           htmlSettings.isImageIncludeUUID())); 
    233231                        privateImageHandler = true; 
    234232                } 
  • trunk/docx4j/src/main/java/org/docx4j/convert/out/pdf/viaXSLFO/Conversion.java

    r1631 r1637  
    4545import org.docx4j.model.SymbolModel.SymbolModelTransformState; 
    4646import org.docx4j.model.TransformState; 
    47 import org.docx4j.model.images.DefaultConversionImageHandler; 
    4847import org.docx4j.model.listnumbering.Emulator.ResultTriple; 
    4948import org.docx4j.model.properties.Property; 
     
    304303                        if (settings.getImageHandler() == null) { 
    305304                                settings.setImageHandler(settings.getImageDirPath() != null ?  
    306                                                 new DefaultConversionImageHandler(settings.getImageDirPath()) :  
    307                                                 new DefaultConversionImageHandler()); 
     305                                                new PDFConversionImageHandler(settings.getImageDirPath(), true) :  
     306                                                new PDFConversionImageHandler()); 
    308307                                privateImageHandler = true; 
    309308                        } 
  • trunk/docx4j/src/main/java/org/docx4j/model/images/AbstractWordXmlPicture.java

    r1631 r1637  
    55 
    66import org.apache.log4j.Logger; 
     7import org.docx4j.openpackaging.exceptions.Docx4JException; 
    78import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 
    89import org.docx4j.openpackaging.parts.Part; 
     
    257258                setID(imgRelId);                 
    258259                 
    259                 if (rel.getTargetMode() == null || rel.getTargetMode().equals("Internal")) { 
    260                         part = sourcePart.getRelationshipsPart().getPart(rel); 
    261                         if (!(part instanceof BinaryPart)) { 
    262                                 log.error("Invalid part type id: " + imgRelId + ", class = " + part.getClass().getName()); 
    263                                 ignoreImage = true; 
    264                         } 
     260                part = sourcePart.getRelationshipsPart().getPart(rel); 
     261                /* a part == null is ok if it is an external image,  
     262                 * and hasn't been loaded (loadExternalTargets == false) 
     263                 * but the relationship can be external,  
     264                 * but the part avaiable (loadExternalTargets == true) 
     265                 */ 
     266                if ((part != null) && (!(part instanceof BinaryPart))) { 
     267                        log.error("Invalid part type id: " + imgRelId + ", class = " + part.getClass().getName()); 
     268                        ignoreImage = true; 
    265269                } 
    266270                if (!ignoreImage) { 
     
    280284         */ 
    281285        protected String handlePart(ConversionImageHandler imageHandler, AbstractWordXmlPicture picture, Relationship relationship, BinaryPart binaryPart) { 
    282                 return imageHandler.handleImage(picture, relationship, binaryPart); 
     286        String uri = null; 
     287                try { 
     288                        uri = imageHandler.handleImage(picture, relationship, binaryPart); 
     289                } 
     290                catch (Docx4JException de) { 
     291                        if (relationship != null) { 
     292                                log.error("Exception handling image id: " + relationship.getId() + ", target '" + relationship.getTarget() + "': " + de.toString(), de); 
     293                        } 
     294                        else { 
     295                                log.error("Exception handling image: " + de.toString(), de); 
     296                        } 
     297                } 
     298                return uri; 
    283299        } 
    284300         
  • trunk/docx4j/src/main/java/org/docx4j/model/images/ConversionImageHandler.java

    r1631 r1637  
    22 
    33import org.docx4j.model.images.AbstractWordXmlPicture; 
     4import org.docx4j.openpackaging.exceptions.Docx4JException; 
    45import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPart; 
    56import org.docx4j.relationships.Relationship; 
     
    1516         * @param part of the image, if it is an internal image, otherwise null 
    1617         * @return uri for the image we've saved, or null 
     18         * @throws Docx4JException this exception will be logged, but not propagated 
    1719         */ 
    18         public String handleImage(AbstractWordXmlPicture picture, Relationship relationship, BinaryPart part); 
     20        public String handleImage(AbstractWordXmlPicture picture, Relationship relationship, BinaryPart part) throws Docx4JException; 
    1921} 
  • trunk/docx4j/src/main/java/org/docx4j/model/images/WordXmlPictureE20.java

    r1631 r1637  
    250250        CTBlip blip = pic.getBlipFill().getBlip(); 
    251251         
    252         String imgRelId = blip.getEmbed();       
    253         if (imgRelId!=null) { 
     252        String imgRelId = blip.getEmbed(); 
     253        if ((imgRelId == null) || (imgRelId.length() == 0)) { 
     254                imgRelId = blip.getLink(); 
     255        } 
     256        if ((imgRelId != null) && (imgRelId.length() > 0)) { 
    254257                converter.handleImageRel(imageHandler, imgRelId, sourcePart); 
    255         } else if (blip.getLink()!=null) { 
    256                 converter.handleImageRel(imageHandler, blip.getLink(), sourcePart); 
    257         } else { 
     258        } 
     259        else { 
    258260                log.error("not linked or embedded?!"); 
    259261        } 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/io/ExternalResourceUtils.java

    r1232 r1637  
    11package org.docx4j.openpackaging.io; 
    22 
    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; 
     3import java.io.IOException; 
     4import java.io.InputStream; 
     5import java.net.MalformedURLException; 
     6import java.net.URI; 
     7import java.net.URISyntaxException; 
     8import java.net.URL; 
     9import java.util.Map; 
     10import java.util.TreeMap; 
     11 
    712import org.apache.log4j.Logger; 
     13import org.docx4j.openpackaging.contenttype.ContentTypes; 
    814import org.docx4j.openpackaging.exceptions.Docx4JException; 
    915import org.docx4j.openpackaging.parts.ExternalTarget; 
    1016import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPart; 
     17import org.docx4j.openpackaging.parts.WordprocessingML.ImageBmpPart; 
    1118import org.docx4j.openpackaging.parts.WordprocessingML.ImageGifPart; 
    1219import org.docx4j.openpackaging.parts.WordprocessingML.ImageJpegPart; 
    1320import org.docx4j.openpackaging.parts.WordprocessingML.ImagePngPart; 
     21import org.docx4j.openpackaging.parts.WordprocessingML.ImageTiffPart; 
     22import org.docx4j.openpackaging.parts.WordprocessingML.MetafileEmfPart; 
     23import org.docx4j.openpackaging.parts.WordprocessingML.MetafileWmfPart; 
    1424 
    1525public class ExternalResourceUtils { 
     
    2030 
    2131        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        } 
    2245         
    2346        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; 
    2554                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('\\', '/')); 
    5956                } 
    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; 
    6173        } 
    6274         
     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        } 
    6397 
    6498} 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/WordprocessingML/MetafileEmfPart.java

    r1487 r1637  
    11package org.docx4j.openpackaging.parts.WordprocessingML; 
    22 
    3 import java.io.File; 
    4 import java.io.FileInputStream; 
    5 import java.io.FileOutputStream; 
    6 import java.io.OutputStream; 
    7  
    83import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
     4import org.docx4j.openpackaging.parts.ExternalTarget; 
    95import org.docx4j.openpackaging.parts.PartName; 
    106import org.docx4j.openpackaging.parts.relationships.Namespaces; 
    11 import org.docx4j.utils.BufferUtil; 
    127 
    138/** 
     
    6156        } 
    6257         
     58        public MetafileEmfPart(ExternalTarget externalTarget) { 
     59                super(externalTarget); 
     60                init(); 
     61        }        
     62         
    6363        public void init() { 
    6464                // Used if this Part is added to [Content_Types].xml  
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/WordprocessingML/MetafilePart.java

    r1487 r1637  
    22 
    33import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
     4import org.docx4j.openpackaging.parts.ExternalTarget; 
    45import org.docx4j.openpackaging.parts.PartName; 
    56 
     
    1617        } 
    1718         
     19        public MetafilePart(ExternalTarget externalTarget) { 
     20                super(externalTarget); 
     21        }        
    1822 
    1923} 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/WordprocessingML/MetafileWmfPart.java

    r1078 r1637  
    11package org.docx4j.openpackaging.parts.WordprocessingML; 
    22 
    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; 
    83import 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; 
    164 
    175import net.arnx.wmf2svg.gdi.svg.SvgGdi; 
     
    197 
    208import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
     9import org.docx4j.openpackaging.parts.ExternalTarget; 
    2110import org.docx4j.openpackaging.parts.PartName; 
    2211import org.docx4j.openpackaging.parts.relationships.Namespaces; 
     
    6453        } 
    6554         
     55        public MetafileWmfPart(ExternalTarget externalTarget) { 
     56                super(externalTarget); 
     57                init(); 
     58        }        
     59         
    6660        public void init() { 
    6761                // Used if this Part is added to [Content_Types].xml  
  • trunk/docx4j/src/pptx4j/java/org/pptx4j/convert/out/svginhtml/SvgExporter.java

    r1631 r1637  
    1919import org.docx4j.convert.out.AbstractConversionSettings; 
    2020import org.docx4j.convert.out.html.AbstractHtmlExporter; 
     21import org.docx4j.convert.out.html.HTMLConversionImageHandler; 
    2122import org.docx4j.convert.out.html.AbstractHtmlExporter.HtmlSettings; 
    2223import org.docx4j.dml.CTTextCharacterProperties; 
    2324import org.docx4j.dml.CTTextParagraphProperties; 
    2425import org.docx4j.dml.CTTransform2D; 
    25 import org.docx4j.model.images.DefaultConversionImageHandler; 
    2626import org.docx4j.model.styles.StyleTree; 
    2727import org.docx4j.model.styles.Tree; 
     
    5656         
    5757        public static class SvgSettings extends AbstractConversionSettings { 
    58                  
     58                public static final String IMAGE_TARGET_URI = "imageTargetUri"; 
     59                 
     60                public void setImageTargetUri(String imageTargetUri) { 
     61                        settings.put(IMAGE_TARGET_URI, imageTargetUri); 
     62                } 
     63                 
     64                public String getImageTargetUri() { 
     65                        return (String)settings.get(IMAGE_TARGET_URI); 
     66                } 
    5967        } 
    6068         
     
    156164                boolean privateImageHandler = false; 
    157165                if (settings.getImageHandler() == null) { 
    158                         settings.setImageHandler(settings.getImageDirPath() != null ?  
    159                                         new DefaultConversionImageHandler(settings.getImageDirPath()) :  
    160                                         new DefaultConversionImageHandler()); 
     166                        settings.setImageHandler( 
     167                                new HTMLConversionImageHandler(settings.getImageDirPath(),  
     168                                                   settings.getImageTargetUri(),  
     169                                                   settings.isImageIncludeUUID())); 
    161170                        privateImageHandler = true; 
    162171                } 
Note: See TracChangeset for help on using the changeset viewer.