public interface IDocumentPartSavingCallback
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.docx"); 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.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())); // 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 | documentPartSaving(DocumentPartSavingArgs args) | |
Called when Aspose.Words is about to save a document part.
|
public abstract void documentPartSaving(DocumentPartSavingArgs 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.docx"); 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.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())); // 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; }