public interface IImageSavingCallback
Example: Example:
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"));
}
}
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 void | imageSaving(ImageSavingArgs args) | |
Called when Aspose.Words saves an image to HTML. |
Method Detail |
---|
imageSaving | |
public abstract void imageSaving(ImageSavingArgs args) throws java.lang.Exception |
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")); } }