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.
Examples:
Shows how to rename the image name during saving into Markdown document.
public void renameImages() throws Exception {
Document doc = new Document(getMyDir() + "Rendering.docx");
MarkdownSaveOptions saveOptions = new MarkdownSaveOptions();
// If we convert a document that contains images into Markdown, we will end up with one Markdown 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.
saveOptions.setImageSavingCallback(new SavedImageRename("MarkdownSaveOptions.HandleDocument.md"));
saveOptions.setSaveFormat(SaveFormat.MARKDOWN);
// The ImageSaving() method of our callback will be run at this time.
doc.save(getArtifactsDir() + "MarkdownSaveOptions.HandleDocument.md", saveOptions);
Supplier> filteredShapes = () -> DocumentHelper.directoryGetFiles(
getArtifactsDir(), "*").stream().
filter(s -> s.startsWith(getArtifactsDir() + "MarkdownSaveOptions.HandleDocument.md shape"));
Assert.assertEquals(1, filteredShapes.get().filter(f -> f.endsWith(".jpeg")).count());
Assert.assertEquals(8, filteredShapes.get().filter(f -> f.endsWith(".png")).count());
}
///
/// Renames saved images that are produced when an Markdown document is saved.
///
public static class SavedImageRename implements IImageSavingCallback
{
public SavedImageRename(String outFileName)
{
mOutFileName = outFileName;
}
public void imageSaving(ImageSavingArgs args) throws Exception
{
String imageFileName = MessageFormat.format("{0} shape {1}, of type {2}.{3}",
mOutFileName, ++mCount, args.getCurrentShape().getShapeType(),
FilenameUtils.getExtension(args.getImageFileName()));
args.setImageFileName(imageFileName);
args.setImageStream(new FileOutputStream(getArtifactsDir() + imageFileName));
Assert.assertTrue(args.isImageAvailable());
Assert.assertFalse(args.getKeepImageStreamOpen());
}
private int mCount;
private String mOutFileName;
}
Shows how to split a document into parts and save them.
public void documentPartsFileNames() throws Exception {
Document doc = new Document(getMyDir() + "Rendering.docx");
String outFileName = "SavingCallback.DocumentPartsFileNames.html";
// Create an "HtmlFixedSaveOptions" object, which we can pass to the document's "Save" method
// to modify how we convert the document to HTML.
HtmlSaveOptions options = new HtmlSaveOptions();
// If we save the document normally, there will be one output HTML
// document with all the source document's contents.
// Set the "DocumentSplitCriteria" property to "DocumentSplitCriteria.SectionBreak" to
// save our document to multiple HTML files: one for each section.
options.setDocumentSplitCriteria(DocumentSplitCriteria.SECTION_BREAK);
// Assign a custom callback to the "DocumentPartSavingCallback" property to alter the document part saving logic.
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));
doc.save(getArtifactsDir() + outFileName, options);
}
///
/// Sets custom filenames for output documents that the saving operation splits a document into.
///
private static class SavedDocumentPartRename implements IDocumentPartSavingCallback {
public SavedDocumentPartRename(String outFileName, int documentSplitCriteria) {
mOutFileName = outFileName;
mDocumentSplitCriteria = documentSplitCriteria;
}
public void documentPartSaving(DocumentPartSavingArgs args) throws Exception {
// We can access the entire source document via the "Document" property.
Assert.assertTrue(args.getDocument().getOriginalFileName().endsWith("Rendering.docx"));
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()));
// Below are two ways of specifying where Aspose.Words will save each part of the document.
// 1 - Set a filename for the output part file:
args.setDocumentPartFileName(partFileName);
// 2 - Create a custom stream for the output part file:
try (FileOutputStream outputStream = new FileOutputStream(getArtifactsDir() + partFileName)) {
args.setDocumentPartStream(outputStream);
}
Assert.assertNotNull(args.getDocumentPartStream());
Assert.assertFalse(args.getKeepDocumentPartStreamOpen());
}
private int mCount;
private final String mOutFileName;
private final int mDocumentSplitCriteria;
}
///
/// Sets custom filenames for image files that an HTML conversion creates.
///
public static class SavedImageRename implements IImageSavingCallback {
public SavedImageRename(String outFileName) {
mOutFileName = outFileName;
}
public void imageSaving(ImageSavingArgs args) throws Exception {
String imageFileName = MessageFormat.format("{0} shape {1}, of type {2}.{3}", mOutFileName, ++mCount, args.getCurrentShape().getShapeType(), FilenameUtils.getExtension(args.getImageFileName()));
// Below are two ways of specifying where Aspose.Words will save each part of the document.
// 1 - Set a filename for the output image file:
args.setImageFileName(imageFileName);
// 2 - Create a custom stream for the output image file:
args.setImageStream(new FileOutputStream(getArtifactsDir() + imageFileName));
Assert.assertNotNull(args.getImageStream());
Assert.assertTrue(args.isImageAvailable());
Assert.assertFalse(args.getKeepImageStreamOpen());
}
private int mCount;
private final String mOutFileName;
}
Methods
Method | Description |
---|---|
imageSaving(ImageSavingArgs args) | Called when Aspose.Words saves an image to HTML. |
imageSaving(ImageSavingArgs args)
public abstract void imageSaving(ImageSavingArgs args)
Called when Aspose.Words saves an image to HTML.
Examples:
Shows how to split a document into parts and save them.
public void documentPartsFileNames() throws Exception {
Document doc = new Document(getMyDir() + "Rendering.docx");
String outFileName = "SavingCallback.DocumentPartsFileNames.html";
// Create an "HtmlFixedSaveOptions" object, which we can pass to the document's "Save" method
// to modify how we convert the document to HTML.
HtmlSaveOptions options = new HtmlSaveOptions();
// If we save the document normally, there will be one output HTML
// document with all the source document's contents.
// Set the "DocumentSplitCriteria" property to "DocumentSplitCriteria.SectionBreak" to
// save our document to multiple HTML files: one for each section.
options.setDocumentSplitCriteria(DocumentSplitCriteria.SECTION_BREAK);
// Assign a custom callback to the "DocumentPartSavingCallback" property to alter the document part saving logic.
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));
doc.save(getArtifactsDir() + outFileName, options);
}
///
/// Sets custom filenames for output documents that the saving operation splits a document into.
///
private static class SavedDocumentPartRename implements IDocumentPartSavingCallback {
public SavedDocumentPartRename(String outFileName, int documentSplitCriteria) {
mOutFileName = outFileName;
mDocumentSplitCriteria = documentSplitCriteria;
}
public void documentPartSaving(DocumentPartSavingArgs args) throws Exception {
// We can access the entire source document via the "Document" property.
Assert.assertTrue(args.getDocument().getOriginalFileName().endsWith("Rendering.docx"));
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()));
// Below are two ways of specifying where Aspose.Words will save each part of the document.
// 1 - Set a filename for the output part file:
args.setDocumentPartFileName(partFileName);
// 2 - Create a custom stream for the output part file:
try (FileOutputStream outputStream = new FileOutputStream(getArtifactsDir() + partFileName)) {
args.setDocumentPartStream(outputStream);
}
Assert.assertNotNull(args.getDocumentPartStream());
Assert.assertFalse(args.getKeepDocumentPartStreamOpen());
}
private int mCount;
private final String mOutFileName;
private final int mDocumentSplitCriteria;
}
///
/// Sets custom filenames for image files that an HTML conversion creates.
///
public static class SavedImageRename implements IImageSavingCallback {
public SavedImageRename(String outFileName) {
mOutFileName = outFileName;
}
public void imageSaving(ImageSavingArgs args) throws Exception {
String imageFileName = MessageFormat.format("{0} shape {1}, of type {2}.{3}", mOutFileName, ++mCount, args.getCurrentShape().getShapeType(), FilenameUtils.getExtension(args.getImageFileName()));
// Below are two ways of specifying where Aspose.Words will save each part of the document.
// 1 - Set a filename for the output image file:
args.setImageFileName(imageFileName);
// 2 - Create a custom stream for the output image file:
args.setImageStream(new FileOutputStream(getArtifactsDir() + imageFileName));
Assert.assertNotNull(args.getImageStream());
Assert.assertTrue(args.isImageAvailable());
Assert.assertFalse(args.getKeepImageStreamOpen());
}
private int mCount;
private final String mOutFileName;
}
Parameters:
Parameter | Type | Description |
---|---|---|
args | ImageSavingArgs |