com.aspose.words

Interface IResourceLoadingCallback

  • public interface IResourceLoadingCallback 

Implement this interface if you want to control how Aspose.Words loads external resource when importing a document and inserting images using DocumentBuilder.

Example:

Shows how to customize the process of loading external resources into a document.
public void resourceLoadingCallback() throws Exception
{
    Document doc = new Document();
    doc.setResourceLoadingCallback(new ImageNameHandler());

    DocumentBuilder builder = new DocumentBuilder(doc);

    // Images usually are inserted using a URI, or a byte array.
    // Every instance of a resource load will call our callback's ResourceLoading method.
    builder.insertImage("Google logo");
    builder.insertImage("Aspose logo");
    builder.insertImage("Watermark");

    Assert.assertEquals(3, doc.getChildNodes(NodeType.SHAPE, true).getCount());

    doc.save(getArtifactsDir() + "DocumentBase.ResourceLoadingCallback.docx");
}

/// <summary>
/// Allows us to load images into a document using predefined shorthands, as opposed to URIs.
/// This will separate image loading logic from the rest of the document construction.
/// </summary>
private static class ImageNameHandler implements IResourceLoadingCallback {
    public int resourceLoading(final ResourceLoadingArgs args) throws URISyntaxException, IOException {
        if (args.getResourceType() == ResourceType.IMAGE) {
            // If this callback encounters one of the image shorthands while loading an image,
        // it will apply unique logic for each defined shorthand instead of treating it as a URI.
            if ("Google logo".equals(args.getOriginalUri())) {
                args.setData(DocumentHelper.getBytesFromStream(new URI("http://www.google.com/images/logos/ps_logo2.png").toURL().openStream()));

                return ResourceLoadingAction.USER_PROVIDED;
            }

            if ("Aspose logo".equals(args.getOriginalUri())) {
                args.setData(DocumentHelper.getBytesFromStream(getAsposelogoUri().toURL().openStream()));

                return ResourceLoadingAction.USER_PROVIDED;
            }

            if ("Watermark".equals(args.getOriginalUri())) {
                InputStream imageStream = new FileInputStream(getImageDir() + "Transparent background logo.png");
                args.setData(DocumentHelper.getBytesFromStream(imageStream));

                return ResourceLoadingAction.USER_PROVIDED;
            }
        }

        return ResourceLoadingAction.DEFAULT;
    }
}

Method Summary
abstract intresourceLoading(ResourceLoadingArgs args)
Called when Aspose.Words loads any external resource.
 

    • Method Detail

      • resourceLoading

        public abstract int resourceLoading(ResourceLoadingArgs args)
                                         throws java.lang.Exception
        Called when Aspose.Words loads any external resource.

        Example:

        Shows how to customize the process of loading external resources into a document.
        public void resourceLoadingCallback() throws Exception
        {
            Document doc = new Document();
            doc.setResourceLoadingCallback(new ImageNameHandler());
        
            DocumentBuilder builder = new DocumentBuilder(doc);
        
            // Images usually are inserted using a URI, or a byte array.
            // Every instance of a resource load will call our callback's ResourceLoading method.
            builder.insertImage("Google logo");
            builder.insertImage("Aspose logo");
            builder.insertImage("Watermark");
        
            Assert.assertEquals(3, doc.getChildNodes(NodeType.SHAPE, true).getCount());
        
            doc.save(getArtifactsDir() + "DocumentBase.ResourceLoadingCallback.docx");
        }
        
        /// <summary>
        /// Allows us to load images into a document using predefined shorthands, as opposed to URIs.
        /// This will separate image loading logic from the rest of the document construction.
        /// </summary>
        private static class ImageNameHandler implements IResourceLoadingCallback {
            public int resourceLoading(final ResourceLoadingArgs args) throws URISyntaxException, IOException {
                if (args.getResourceType() == ResourceType.IMAGE) {
                    // If this callback encounters one of the image shorthands while loading an image,
                // it will apply unique logic for each defined shorthand instead of treating it as a URI.
                    if ("Google logo".equals(args.getOriginalUri())) {
                        args.setData(DocumentHelper.getBytesFromStream(new URI("http://www.google.com/images/logos/ps_logo2.png").toURL().openStream()));
        
                        return ResourceLoadingAction.USER_PROVIDED;
                    }
        
                    if ("Aspose logo".equals(args.getOriginalUri())) {
                        args.setData(DocumentHelper.getBytesFromStream(getAsposelogoUri().toURL().openStream()));
        
                        return ResourceLoadingAction.USER_PROVIDED;
                    }
        
                    if ("Watermark".equals(args.getOriginalUri())) {
                        InputStream imageStream = new FileInputStream(getImageDir() + "Transparent background logo.png");
                        args.setData(DocumentHelper.getBytesFromStream(imageStream));
        
                        return ResourceLoadingAction.USER_PROVIDED;
                    }
                }
        
                return ResourceLoadingAction.DEFAULT;
            }
        }