com.aspose.words

Interface IImageSavingCallback

  • public interface IImageSavingCallback 

Implement this interface if you want to control how Aspose.Words saves images when saving a document to HTML. May be used by other formats.

Example:

Shows how to define custom logic for controlling how images are saved when exporting to HTML based formats.
public void saveHtmlExportImages() throws Exception {
    Document doc = new Document(getMyDir() + "Document.doc");

    // Create and pass the object which implements the handler methods.
    HtmlSaveOptions options = new HtmlSaveOptions(SaveFormat.HTML);
    options.setImageSavingCallback(new HandleImageSaving());

    doc.save(getArtifactsDir() + "Document.SaveWithCustomImagesExport.html", options);
}

public class HandleImageSaving implements IImageSavingCallback {
    public void imageSaving(final ImageSavingArgs args) throws Exception {
        // Change any images in the document being exported with the extension of "jpeg" to "jpg".
        if (args.getImageFileName().endsWith(".jpeg"))
            args.setImageFileName(args.getImageFileName().replace(".jpeg", ".jpg"));
    }
}

Example:

Shows how split a document into parts and save them.
public void documentParts() throws Exception {
    // Open a document to be converted to html
    Document doc = new Document(getMyDir() + "Rendering.doc");
    String outFileName = "SavingCallback.DocumentParts.Rendering.html";

    // We can use an appropriate SaveOptions subclass to customize the conversion process
    HtmlSaveOptions options = new HtmlSaveOptions();

    // We can use it to split a document into smaller parts, in this instance split by section breaks
    // Each part will be saved into a separate file, creating many files during the conversion process instead of just one
    options.setDocumentSplitCriteria(DocumentSplitCriteria.SECTION_BREAK);

    // We can set a callback to name each document part file ourselves
    options.setDocumentPartSavingCallback(new SavedDocumentPartRename(outFileName, options.getDocumentSplitCriteria()));

    // If we convert a document that contains images into html, we will end up with one html file which links to several images
    // Each image will be in the form of a file in the local file system
    // There is also a callback that can customize the name and file system location of each image
    options.setImageSavingCallback(new SavedImageRename(outFileName));

    // The DocumentPartSaving() and ImageSaving() methods of our callbacks will be run at this time
    doc.save(getArtifactsDir() + outFileName, options);
}

/// <summary>
/// Renames saved document parts that are produced when an HTML document is saved while being split according to a criteria
/// </summary>
private static class SavedDocumentPartRename implements IDocumentPartSavingCallback {
    public SavedDocumentPartRename(String outFileName, int documentSplitCriteria) {
        mOutFileName = outFileName;
        mDocumentSplitCriteria = documentSplitCriteria;
    }

    public void documentPartSaving(DocumentPartSavingArgs args) throws Exception {
        Assert.assertTrue(args.getDocument().getOriginalFileName().endsWith("Rendering.doc"));

        String partType = "";

        switch (mDocumentSplitCriteria) {
            case DocumentSplitCriteria.PAGE_BREAK:
                partType = "Page";
                break;
            case DocumentSplitCriteria.COLUMN_BREAK:
                partType = "Column";
                break;
            case DocumentSplitCriteria.SECTION_BREAK:
                partType = "Section";
                break;
            case DocumentSplitCriteria.HEADING_PARAGRAPH:
                partType = "Paragraph from heading";
                break;
        }

        String partFileName = MessageFormat.format("{0} part {1}, of type {2}.{3}", mOutFileName, ++mCount, partType, FilenameUtils.getExtension(args.getDocumentPartFileName()));

        // We can designate the filename and location of each output file either by filename
        args.setDocumentPartFileName(partFileName);

        // Or we can make a new stream and choose the location of the file at construction
        try {
            FileOutputStream outputStream = new FileOutputStream(getArtifactsDir() + partFileName);
            args.setDocumentPartStream(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }

        Assert.assertNotNull(args.getDocumentPartStream());
        Assert.assertFalse(args.getKeepDocumentPartStreamOpen());
    }

    private int mCount;
    private String mOutFileName;
    private int mDocumentSplitCriteria;
}

/// <summary>
/// Renames saved images that are produced when an HTML document is saved
/// </summary>
public static class SavedImageRename implements IImageSavingCallback {
    public SavedImageRename(String outFileName) {
        mOutFileName = outFileName;
    }

    public void imageSaving(ImageSavingArgs args) throws Exception {
        // Same filename and stream functions as above in IDocumentPartSavingCallback apply here
        String imageFileName = MessageFormat.format("{0} shape {1}, of type {2}.{3}", mOutFileName, ++mCount, args.getCurrentShape().getShapeType(), FilenameUtils.getExtension(args.getImageFileName()));

        args.setImageFileName(imageFileName);

        try {
            FileOutputStream outputStream = new FileOutputStream(getArtifactsDir() + imageFileName);
            args.setImageStream(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }

        Assert.assertNotNull(args.getImageStream());
        Assert.assertTrue(args.isImageAvailable());
        Assert.assertFalse(args.getKeepImageStreamOpen());
    }

    private int mCount;
    private String mOutFileName;
}

Method Summary
abstract voidimageSaving(ImageSavingArgs args)
Called when Aspose.Words saves an image to HTML.
 

    • Method Detail

      • imageSaving

        public abstract void imageSaving(ImageSavingArgs args)
                                      throws java.lang.Exception
        Called when Aspose.Words saves an image to HTML.

        Example:

        Shows how split a document into parts and save them.
        public void documentParts() throws Exception {
            // Open a document to be converted to html
            Document doc = new Document(getMyDir() + "Rendering.doc");
            String outFileName = "SavingCallback.DocumentParts.Rendering.html";
        
            // We can use an appropriate SaveOptions subclass to customize the conversion process
            HtmlSaveOptions options = new HtmlSaveOptions();
        
            // We can use it to split a document into smaller parts, in this instance split by section breaks
            // Each part will be saved into a separate file, creating many files during the conversion process instead of just one
            options.setDocumentSplitCriteria(DocumentSplitCriteria.SECTION_BREAK);
        
            // We can set a callback to name each document part file ourselves
            options.setDocumentPartSavingCallback(new SavedDocumentPartRename(outFileName, options.getDocumentSplitCriteria()));
        
            // If we convert a document that contains images into html, we will end up with one html file which links to several images
            // Each image will be in the form of a file in the local file system
            // There is also a callback that can customize the name and file system location of each image
            options.setImageSavingCallback(new SavedImageRename(outFileName));
        
            // The DocumentPartSaving() and ImageSaving() methods of our callbacks will be run at this time
            doc.save(getArtifactsDir() + outFileName, options);
        }
        
        /// <summary>
        /// Renames saved document parts that are produced when an HTML document is saved while being split according to a criteria
        /// </summary>
        private static class SavedDocumentPartRename implements IDocumentPartSavingCallback {
            public SavedDocumentPartRename(String outFileName, int documentSplitCriteria) {
                mOutFileName = outFileName;
                mDocumentSplitCriteria = documentSplitCriteria;
            }
        
            public void documentPartSaving(DocumentPartSavingArgs args) throws Exception {
                Assert.assertTrue(args.getDocument().getOriginalFileName().endsWith("Rendering.doc"));
        
                String partType = "";
        
                switch (mDocumentSplitCriteria) {
                    case DocumentSplitCriteria.PAGE_BREAK:
                        partType = "Page";
                        break;
                    case DocumentSplitCriteria.COLUMN_BREAK:
                        partType = "Column";
                        break;
                    case DocumentSplitCriteria.SECTION_BREAK:
                        partType = "Section";
                        break;
                    case DocumentSplitCriteria.HEADING_PARAGRAPH:
                        partType = "Paragraph from heading";
                        break;
                }
        
                String partFileName = MessageFormat.format("{0} part {1}, of type {2}.{3}", mOutFileName, ++mCount, partType, FilenameUtils.getExtension(args.getDocumentPartFileName()));
        
                // We can designate the filename and location of each output file either by filename
                args.setDocumentPartFileName(partFileName);
        
                // Or we can make a new stream and choose the location of the file at construction
                try {
                    FileOutputStream outputStream = new FileOutputStream(getArtifactsDir() + partFileName);
                    args.setDocumentPartStream(outputStream);
                } catch (IOException e) {
                    e.printStackTrace();
                }
        
                Assert.assertNotNull(args.getDocumentPartStream());
                Assert.assertFalse(args.getKeepDocumentPartStreamOpen());
            }
        
            private int mCount;
            private String mOutFileName;
            private int mDocumentSplitCriteria;
        }
        
        /// <summary>
        /// Renames saved images that are produced when an HTML document is saved
        /// </summary>
        public static class SavedImageRename implements IImageSavingCallback {
            public SavedImageRename(String outFileName) {
                mOutFileName = outFileName;
            }
        
            public void imageSaving(ImageSavingArgs args) throws Exception {
                // Same filename and stream functions as above in IDocumentPartSavingCallback apply here
                String imageFileName = MessageFormat.format("{0} shape {1}, of type {2}.{3}", mOutFileName, ++mCount, args.getCurrentShape().getShapeType(), FilenameUtils.getExtension(args.getImageFileName()));
        
                args.setImageFileName(imageFileName);
        
                try {
                    FileOutputStream outputStream = new FileOutputStream(getArtifactsDir() + imageFileName);
                    args.setImageStream(outputStream);
                } catch (IOException e) {
                    e.printStackTrace();
                }
        
                Assert.assertNotNull(args.getImageStream());
                Assert.assertTrue(args.isImageAvailable());
                Assert.assertFalse(args.getKeepImageStreamOpen());
            }
        
            private int mCount;
            private String mOutFileName;
        }

        Example:

        Shows how to define custom logic for controlling how images are saved when exporting to HTML based formats.
        public void saveHtmlExportImages() throws Exception {
            Document doc = new Document(getMyDir() + "Document.doc");
        
            // Create and pass the object which implements the handler methods.
            HtmlSaveOptions options = new HtmlSaveOptions(SaveFormat.HTML);
            options.setImageSavingCallback(new HandleImageSaving());
        
            doc.save(getArtifactsDir() + "Document.SaveWithCustomImagesExport.html", options);
        }
        
        public class HandleImageSaving implements IImageSavingCallback {
            public void imageSaving(final ImageSavingArgs args) throws Exception {
                // Change any images in the document being exported with the extension of "jpeg" to "jpg".
                if (args.getImageFileName().endsWith(".jpeg"))
                    args.setImageFileName(args.getImageFileName().replace(".jpeg", ".jpg"));
            }
        }