This guide explains best practices for working with Nutrient .NET SDK (formerly GdPicture.NET).

Error handling

Most classic GdPicture14 APIs return a member of the GdPictureStatus enum, so you handle errors with status checks.

Some newer SDK layers can throw exceptions, such as argument validation and workflow-specific errors. In production code, combine:

  • Status checks for GdPicture14 operations
  • try/catch for higher-level workflows when needed

The following code converts a PDF to a TIFF image. It checks that the source PDF loads before it continues:

using GdPictureDocumentConverter gdpictureDocumentConverter = new GdPictureDocumentConverter();
GdPictureStatus status = gdpictureDocumentConverter.LoadFromFile(@"C:\temp\source.pdf",
GdPicture14.DocumentFormat.DocumentFormatPDF);
if (status == GdPictureStatus.OK)
{
Console.WriteLine("The PDF file has been loaded successfully.");
status = gdpictureDocumentConverter.SaveAsTIFF(@"C:\temp\output.tif",
TiffCompression.TiffCompressionAUTO);
if (status == GdPictureStatus.OK)
Console.WriteLine("The file has been saved successfully.");
else
Console.WriteLine($"The file has failed to save. Status: {status}");
}
else
Console.WriteLine($"The file has failed to load. Status: {status}");
Used methods

Release used images

After you process an image, release it from memory by passing the image ID to DisposeImage. DisposeImage is a static method on GdPictureDocumentUtilities, so you don’t need to instantiate the class. You can call it for any image, regardless of how you loaded it:

using GdPicturePDF gdpictureSourcePDF = new GdPicturePDF();
using GdPicturePDF gdpictureDestPDF = new GdPicturePDF();
GdPictureStatus status = gdpictureSourcePDF.LoadFromFile(@"C:\temp\source.pdf");
if (status == GdPictureStatus.OK)
{
status = gdpictureDestPDF.NewPDF();
if (status == GdPictureStatus.OK)
{
int pageCount = gdpictureSourcePDF.GetPageCount();
if (gdpictureSourcePDF.GetStat() == GdPictureStatus.OK)
{
for (int i = 1; i <= pageCount; i++)
{
status = gdpictureSourcePDF.SelectPage(i);
if (status != GdPictureStatus.OK)
break;
int imageCount = gdpictureSourcePDF.GetPageImageCount();
if (gdpictureSourcePDF.GetStat() != GdPictureStatus.OK)
break;
for (int j = 1; j <= imageCount; j++)
{
int imageID = gdpictureSourcePDF.ExtractPageImage(j);
if (gdpictureSourcePDF.GetStat() == GdPictureStatus.OK)
{
status = gdpictureDestPDF.AddImageFromGdPictureImage(imageID,
PdfAdvancedImageCompression.PdfAdvancedImageCompressionMRC);
// Release the image from memory in all cases.
GdPictureDocumentUtilities.DisposeImage(imageID);
if (status != GdPictureStatus.OK)
break;
}
}
}
gdpictureDestPDF.SaveToFile(@"C:\temp\output.pdf");
}
}
}