Best practices for PDF processing in .NET
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
GdPicture14operations try/catchfor 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}");Using gdpictureDocumentConverter As GdPictureDocumentConverter = New GdPictureDocumentConverter() Dim status As GdPictureStatus = gdpictureDocumentConverter.LoadFromFile("C:\temp\source.pdf", GdPicture14.DocumentFormat.DocumentFormatPDF)
If status = GdPictureStatus.OK Then Console.WriteLine("The PDF file has been loaded successfully.") status = gdpictureDocumentConverter.SaveAsTIFF("C:\temp\output.tif", TiffCompression.TiffCompressionAUTO) If status = GdPictureStatus.OK Then Console.WriteLine("The file has been saved successfully.") Else Console.WriteLine($"The file has failed to save. Status: {status}") End If Else Console.WriteLine($"The file has failed to load. Status: {status}") End IfEnd UsingUsed 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"); } }}Using gdpictureSourcePDF As GdPicturePDF = New GdPicturePDF()Using gdpictureDestPDF As GdPicturePDF = New GdPicturePDF() Dim status As GdPictureStatus = gdpictureSourcePDF.LoadFromFile("C:\temp\source.pdf") If status = GdPictureStatus.OK Then status = gdpictureDestPDF.NewPDF() If status = GdPictureStatus.OK Then Dim pageCount As Integer = gdpictureSourcePDF.GetPageCount() If gdpictureSourcePDF.GetStat() = GdPictureStatus.OK Then For i = 1 To pageCount status = gdpictureSourcePDF.SelectPage(i) If status <> GdPictureStatus.OK Then Exit For End If
Dim imageCount As Integer = gdpictureSourcePDF.GetPageImageCount() If gdpictureSourcePDF.GetStat() <> GdPictureStatus.OK Then Exit For End If
For j = 1 To imageCount Dim imageID As Integer = gdpictureSourcePDF.ExtractPageImage(j) If gdpictureSourcePDF.GetStat() = GdPictureStatus.OK Then status = gdpictureDestPDF.AddImageFromGdPictureImage(imageID, PdfAdvancedImageCompression.PdfAdvancedImageCompressionMRC)
' Release the image from memory in all cases. GdPictureDocumentUtilities.DisposeImage(imageID)
If status <> GdPictureStatus.OK Then Exit For End If End If Next Next
gdpictureDestPDF.SaveToFile("C:\temp\output.pdf") End If End If End IfEnd UsingEnd Using