IDocumentPartSavingCallback
public interface IDocumentPartSavingCallback
Implement this interface if you want to receive notifications and control how Aspose.Words saves document parts when exporting a document to SaveFormat.HTML or SaveFormat.EPUB format.
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;
}
Methods
Method | Description |
---|---|
documentPartSaving(DocumentPartSavingArgs args) | Called when Aspose.Words is about to save a document part. |
documentPartSaving(DocumentPartSavingArgs args)
public abstract void documentPartSaving(DocumentPartSavingArgs args)
Called when Aspose.Words is about to save a document part.
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 | DocumentPartSavingArgs |