public interface IDocumentPartSavingCallback
Example:
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);
}
/// <summary>
/// Sets custom filenames for output documents that the saving operation splits a document into.
/// </summary>
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;
}
/// <summary>
/// Sets custom filenames for image files that an HTML conversion creates.
/// </summary>
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;
}
Method Summary | ||
---|---|---|
abstract void | documentPartSaving(DocumentPartSavingArgs args) | |
Called when Aspose.Words is about to save a document part. |
Method Detail |
---|
documentPartSaving | |
public abstract void documentPartSaving(DocumentPartSavingArgs args) throws java.lang.Exception |
Example:
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); } /// <summary> /// Sets custom filenames for output documents that the saving operation splits a document into. /// </summary> 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; } /// <summary> /// Sets custom filenames for image files that an HTML conversion creates. /// </summary> 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; }