Aspose::Words::Loading::ResourceLoadingArgs class

ResourceLoadingArgs class

Provides data for the ResourceLoading() method.

class ResourceLoadingArgs : public System::Object

Methods

MethodDescription
get_OriginalUri() constOriginal URI of the resource as specified in imported document.
get_ResourceType() constType of resource.
get_Uri() constURI of the resource which is used for downloading if ResourceLoading() returns Default. Initially it’s set to absolute URI of the resource, but user can redefine it to any value.
GetType() const override
Is(const System::TypeInfo&) const override
set_Uri(const System::String&)Setter for Aspose::Words::Loading::ResourceLoadingArgs::get_Uri.
SetData(const System::ArrayPtr<uint8_t>&)Sets user provided data of the resource which is used if ResourceLoading() returns UserProvided.
static Type()

Examples

Shows how to customize the process of loading external resources into a document.

void ResourceLoadingCallback()
{
    auto doc = MakeObject<Document>();
    doc->set_ResourceLoadingCallback(MakeObject<ExDocumentBase::ImageNameHandler>());

    auto builder = MakeObject<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(u"Google logo");
    builder->InsertImage(u"Aspose logo");
    builder->InsertImage(u"Watermark");

    ASSERT_EQ(3, doc->GetChildNodes(NodeType::Shape, true)->get_Count());

    doc->Save(ArtifactsDir + u"DocumentBase.ResourceLoadingCallback.docx");
}

class ImageNameHandler : public IResourceLoadingCallback
{
public:
    ResourceLoadingAction ResourceLoading(SharedPtr<ResourceLoadingArgs> args) override
    {
        // 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 (args->get_ResourceType() == ResourceType::Image)
        {
            String imageUri = args->get_OriginalUri();
            if (imageUri == u"Google logo")
            {
                {
                    auto webClient = MakeObject<System::Net::WebClient>();
                    args->SetData(webClient->DownloadData(u"http://www.google.com/images/logos/ps_logo2.png"));
                }
                return ResourceLoadingAction::UserProvided;
            }
            else if (imageUri == u"Aspose logo")
            {
                args->SetData(System::IO::File::ReadAllBytes(ImageDir + u"Logo.jpg"));
                return ResourceLoadingAction::UserProvided;
            }
            else if (imageUri == u"Watermark")
            {
                args->SetData(System::IO::File::ReadAllBytes(ImageDir + u"Transparent background logo.png"));
                return ResourceLoadingAction::UserProvided;
            }
        }
        return ResourceLoadingAction::Default;
    }
};

See Also