Aspose::Words::Loading::IResourceLoadingCallback Interface Referenceabstract

Detailed Description

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

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"));
}
}
else if (imageUri == u"Aspose logo")
{
args->SetData(System::IO::File::ReadAllBytes(ImageDir + u"Logo.jpg"));
}
else if (imageUri == u"Watermark")
{
args->SetData(System::IO::File::ReadAllBytes(ImageDir + u"Transparent background logo.png"));
}
}
}
};

#include <Aspose.Words.Cpp/Loading/IResourceLoadingCallback.h>

+ Inheritance diagram for Aspose::Words::Loading::IResourceLoadingCallback:

Public Member Functions

virtual const TypeInfoGetType () const override
 
virtual bool Is (const TypeInfo &target) const override
 
virtual ResourceLoadingAction ResourceLoading (SharedPtr< ResourceLoadingArgs > args)=0
 Called when Aspose.Words loads any external resource. More...
 

Static Public Member Functions

static const TypeInfoType ()
 

Member Function Documentation

◆ GetType()

virtual const System::TypeInfo& Aspose::Words::Loading::IResourceLoadingCallback::GetType ( ) const
overridevirtual

Reimplemented from System::Object.

◆ Is()

virtual bool Aspose::Words::Loading::IResourceLoadingCallback::Is ( const System::TypeInfo target) const
overridevirtual

Reimplemented from System::Object.

◆ ResourceLoading()

virtual Aspose::Words::Loading::ResourceLoadingAction Aspose::Words::Loading::IResourceLoadingCallback::ResourceLoading ( System::SharedPtr< Aspose::Words::Loading::ResourceLoadingArgs args)
pure virtual

Called when Aspose.Words loads any external resource.

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"));
}
}
else if (imageUri == u"Aspose logo")
{
args->SetData(System::IO::File::ReadAllBytes(ImageDir + u"Logo.jpg"));
}
else if (imageUri == u"Watermark")
{
args->SetData(System::IO::File::ReadAllBytes(ImageDir + u"Transparent background logo.png"));
}
}
}
};

◆ Type()

static const System::TypeInfo& Aspose::Words::Loading::IResourceLoadingCallback::Type ( )
static