public interface IResourceSavingCallback
Example: Example:
public void resourceSavingCallback() throws Exception {
Document doc = new Document(getMyDir() + "Bullet points with alternative font.docx");
FontSavingCallback callback = new FontSavingCallback();
HtmlFixedSaveOptions saveOptions = new HtmlFixedSaveOptions();
{
saveOptions.setResourceSavingCallback(callback);
}
doc.save(getArtifactsDir() + "HtmlFixedSaveOptions.UsingMachineFonts.html", saveOptions);
System.out.println(callback.getText());
}
private static class FontSavingCallback implements IResourceSavingCallback {
/// <summary>
/// Called when Aspose.Words saves an external resource to fixed page HTML or SVG.
/// </summary>
public void resourceSaving(ResourceSavingArgs args) {
mText.append(MessageFormat.format("Original document URI:\t{0}", args.getDocument().getOriginalFileName()));
mText.append(MessageFormat.format("Resource being saved:\t{0}", args.getResourceFileName()));
mText.append(MessageFormat.format("Full uri after saving:\t{0}\n", args.getResourceFileUri()));
}
public String getText() {
return mText.toString();
}
private final StringBuilder mText = new StringBuilder();
}
public void htmlFixedResourceFolder() throws Exception {
Document doc = new Document(getMyDir() + "Rendering.docx");
ResourceUriPrinter callback = new ResourceUriPrinter();
HtmlFixedSaveOptions options = new HtmlFixedSaveOptions();
{
options.setSaveFormat(SaveFormat.HTML_FIXED);
options.setExportEmbeddedImages(false);
options.setResourcesFolder(getArtifactsDir() + "HtmlFixedResourceFolder");
options.setResourcesFolderAlias(getArtifactsDir() + "HtmlFixedResourceFolderAlias");
options.setShowPageBorder(false);
options.setResourceSavingCallback(callback);
}
// A folder specified by ResourcesFolderAlias will contain the resources instead of ResourcesFolder.
// We must ensure the folder exists before the streams can put their resources into it.
new File(options.getResourcesFolderAlias()).mkdir();
doc.save(getArtifactsDir() + "HtmlFixedSaveOptions.HtmlFixedResourceFolder.html", options);
System.out.println(callback.getText());
String[] resourceFiles = new File(getArtifactsDir() + "HtmlFixedResourceFolderAlias").list();
Assert.assertFalse(new File(getArtifactsDir() + "HtmlFixedResourceFolder").exists());
Assert.assertEquals(6, IterableUtils.countMatches(Arrays.asList(resourceFiles),
f -> f.endsWith(".jpeg") || f.endsWith(".png") || f.endsWith(".css")));
}
/// <summary>
/// Counts and prints URIs of resources contained by as they are converted to fixed HTML.
/// </summary>
private static class ResourceUriPrinter implements IResourceSavingCallback {
public void resourceSaving(ResourceSavingArgs args) throws Exception {
// If we set a folder alias in the SaveOptions object, we will be able to print it from here.
mText.append(MessageFormat.format("Resource #{0} \"{1}\"", ++mSavedResourceCount, args.getResourceFileName()));
String extension = FilenameUtils.getExtension(args.getResourceFileName());
switch (extension) {
case "ttf":
case "woff": {
// By default, 'ResourceFileUri' uses system folder for fonts.
// To avoid problems in other platforms you must explicitly specify the path for the fonts.
args.setResourceFileUri(getArtifactsDir() + File.separatorChar + args.getResourceFileName());
break;
}
}
mText.append("\t" + args.getResourceFileUri());
// If we have specified a folder in the "ResourcesFolderAlias" property,
// we will also need to redirect each stream to put its resource in that folder.
args.setResourceStream(new FileOutputStream(args.getResourceFileUri()));
args.setKeepResourceStreamOpen(false);
}
public String getText() {
return mText.toString();
}
private int mSavedResourceCount;
private final /*final*/ StringBuilder mText = new StringBuilder();
}
Method Summary | ||
---|---|---|
abstract void | resourceSaving(ResourceSavingArgs args) | |
Called when Aspose.Words saves an external resource to fixed page HTML or SVG formats. |
Method Detail |
---|
resourceSaving | |
public abstract void resourceSaving(ResourceSavingArgs args) throws java.lang.Exception |
Example:
Shows how to use a callback to print the URIs of external resources created while converting a document to HTML.public void htmlFixedResourceFolder() throws Exception { Document doc = new Document(getMyDir() + "Rendering.docx"); ResourceUriPrinter callback = new ResourceUriPrinter(); HtmlFixedSaveOptions options = new HtmlFixedSaveOptions(); { options.setSaveFormat(SaveFormat.HTML_FIXED); options.setExportEmbeddedImages(false); options.setResourcesFolder(getArtifactsDir() + "HtmlFixedResourceFolder"); options.setResourcesFolderAlias(getArtifactsDir() + "HtmlFixedResourceFolderAlias"); options.setShowPageBorder(false); options.setResourceSavingCallback(callback); } // A folder specified by ResourcesFolderAlias will contain the resources instead of ResourcesFolder. // We must ensure the folder exists before the streams can put their resources into it. new File(options.getResourcesFolderAlias()).mkdir(); doc.save(getArtifactsDir() + "HtmlFixedSaveOptions.HtmlFixedResourceFolder.html", options); System.out.println(callback.getText()); String[] resourceFiles = new File(getArtifactsDir() + "HtmlFixedResourceFolderAlias").list(); Assert.assertFalse(new File(getArtifactsDir() + "HtmlFixedResourceFolder").exists()); Assert.assertEquals(6, IterableUtils.countMatches(Arrays.asList(resourceFiles), f -> f.endsWith(".jpeg") || f.endsWith(".png") || f.endsWith(".css"))); } /// <summary> /// Counts and prints URIs of resources contained by as they are converted to fixed HTML. /// </summary> private static class ResourceUriPrinter implements IResourceSavingCallback { public void resourceSaving(ResourceSavingArgs args) throws Exception { // If we set a folder alias in the SaveOptions object, we will be able to print it from here. mText.append(MessageFormat.format("Resource #{0} \"{1}\"", ++mSavedResourceCount, args.getResourceFileName())); String extension = FilenameUtils.getExtension(args.getResourceFileName()); switch (extension) { case "ttf": case "woff": { // By default, 'ResourceFileUri' uses system folder for fonts. // To avoid problems in other platforms you must explicitly specify the path for the fonts. args.setResourceFileUri(getArtifactsDir() + File.separatorChar + args.getResourceFileName()); break; } } mText.append("\t" + args.getResourceFileUri()); // If we have specified a folder in the "ResourcesFolderAlias" property, // we will also need to redirect each stream to put its resource in that folder. args.setResourceStream(new FileOutputStream(args.getResourceFileUri())); args.setKeepResourceStreamOpen(false); } public String getText() { return mText.toString(); } private int mSavedResourceCount; private final /*final*/ StringBuilder mText = new StringBuilder(); }
Example:
Shows how to use a callback to track external resources created while converting a document to HTML.public void resourceSavingCallback() throws Exception { Document doc = new Document(getMyDir() + "Bullet points with alternative font.docx"); FontSavingCallback callback = new FontSavingCallback(); HtmlFixedSaveOptions saveOptions = new HtmlFixedSaveOptions(); { saveOptions.setResourceSavingCallback(callback); } doc.save(getArtifactsDir() + "HtmlFixedSaveOptions.UsingMachineFonts.html", saveOptions); System.out.println(callback.getText()); } private static class FontSavingCallback implements IResourceSavingCallback { /// <summary> /// Called when Aspose.Words saves an external resource to fixed page HTML or SVG. /// </summary> public void resourceSaving(ResourceSavingArgs args) { mText.append(MessageFormat.format("Original document URI:\t{0}", args.getDocument().getOriginalFileName())); mText.append(MessageFormat.format("Resource being saved:\t{0}", args.getResourceFileName())); mText.append(MessageFormat.format("Full uri after saving:\t{0}\n", args.getResourceFileUri())); } public String getText() { return mText.toString(); } private final StringBuilder mText = new StringBuilder(); }