Click or drag to resize

PdfIntegrationProviderOnObjectDataAdding Method

Called before an object's data (e.g. the image data for an PdfImageShape object) is added.

Namespace:  RadPdf.Integration
Assembly:  RadPdfStandard (in RadPdfStandard.dll) Version: 4.1.0.0 (4.1.0.0)
Syntax
public virtual void OnObjectDataAdding(
	ObjectDataAddingEventArgs e
)

Parameters

e
Type: RadPdf.IntegrationObjectDataAddingEventArgs
An object (defined by ObjectDataAddingEventArgs) that contains event data.
Remarks

Inheriting classes can override this method to perform other tasks or cancel the object data addition altogether. If this method is overridden in an inheriting class, you must call the base implementation.

Examples
The following example overrides the default PdfIntegrationProvider to create a custom Integration Provider for the web application.
C#
using System;
using System.Web;

using RadPdf.Integration;

public class CustomPdfIntegrationProvider : PdfIntegrationProvider
{
    public override void OnObjectDataAdding(ObjectDataAddingEventArgs e)
    {
        base.OnObjectDataAdding(e);

        //Set max overhead (1 MB)
        const int DocumentOverheadMax = 0x100000;

        //Get current storage overhead available
        int overheadAvail = DocumentOverheadMax - e.GetDocumentOverhead();

        //Get new object size
        int size = e.Data.Length;

        //Check if this puts us over our limit
        if (size > overheadAvail)
        {
            //Cancel add object
            e.Cancel = true;
            e.CancelMessage = "Adding this object will exceed the available space allocated for this document.";
        }
    }
}
The following Program.cs file registers the above custom Integration Provider. This example assumes that CustomPdfIntegrationProvider is in namespace referenced by your ASP.NET web application.
C#
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

using RadPdf;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddSession();

// Setup WebApplication
var app = builder.Build();
app.UseStaticFiles();
app.UseRouting();
app.UseSession();
app.UseAuthorization();

// Or however you normally process page requests
app.MapRazorPages();

// Create middleware settings
RadPdfCoreMiddlewareSettings settings = new RadPdfCoreMiddlewareSettings()
{
    // Add SQL Server Connection String, if not using Lite Documents
    // Sample connection string below connects to a SQL Server Express instance on localhost
    // TrustServerCertificate=True is set to avoid a trust exception (e.g. "The certificate chain was issued by an authority that is not trusted.")
    // ConnectionString = @"Server=.\SQLExpress;Database=RadPdf;Trusted_Connection=Yes;TrustServerCertificate=True;",

    // Add License Key
    LicenseKey = "DEMO",

    // Attach the Integration Provider
    IntegrationProvider = new CustomPdfIntegrationProvider()

    // To run RAD PDF without the System Service, add UseService = false
    // If using Lite Documents without the System Service, a LiteStorageProvider must also be implemented
    //UseService = false
};

// Add RAD PDF's middleware to app
app.UseRadPdf(settings);

app.Run();
See Also