Converting a multipage PDF to a multipage TIFF using color detection in C#

This example shows how to convert an existing PDF document to a multipage TIFF file using the color detection plugin to produce the best quality output while keeping the output file size as low as possible.


C#
//We assume that GdPicture has been correctly installed and unlocked.
const string INPUT_DOCUMENT = "input.pdf";
const string OUTPUT_DOCUMENT = "output.tif";
const float DPI = 200F;
GdPicturePDF oGdPicturePDF = new GdPicturePDF();
GdPictureImaging oGdPictureImaging = new GdPictureImaging();
if (oGdPicturePDF.LoadFromFile(INPUT_DOCUMENT, false) == GdPictureStatus.OK)
{
int tiffID = 0;
for (int i = 0; i < oGdPicturePDF.GetPageCount(); i++)
{
oGdPicturePDF.SelectPage(i + 1);
//Rasterizing a page or extracting a page bitmap.
int rasterPage = oGdPicturePDF.RenderPageToGdPictureImageEx(DPI, true, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
if (oGdPicturePDF.GetStat() == GdPictureStatus.OK)
{
//Defining the compression of the tiff page. Let's use CCITT4 for bitonal pages and JPEG for others.
TiffCompression tiffCompression;
//Applying color detection and color depth automatic conversion.
oGdPictureImaging.ColorDetection(rasterPage, true, false, false);
if (oGdPictureImaging.GetBitDepth(rasterPage) == 1)
{
tiffCompression = TiffCompression.TiffCompressionCCITT4;
}
else
{
tiffCompression = TiffCompression.TiffCompressionJPEG;
}
if (i == 0)
{
if (oGdPictureImaging.TiffSaveAsMultiPageFile(rasterPage, OUTPUT_DOCUMENT, tiffCompression) == GdPictureStatus.OK)
{
//Firstly rasterized page's GdPicture ID becomes the multipage tiff id.
tiffID = rasterPage;
}
else
{
MessageBox.Show("Error occurred when saving the file. Status: " + oGdPictureImaging.GetStat().ToString(), "Color Detection Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
break;
}
}
else
{
if (oGdPictureImaging.TiffAddToMultiPageFile(tiffID, rasterPage, tiffCompression) != GdPictureStatus.OK)
{
MessageBox.Show("Error occurred when adding a page. Status: " + oGdPictureImaging.GetStat().ToString(), "Color Detection Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
break;
}
oGdPictureImaging.ReleaseGdPictureImage(rasterPage);
}
}
else
{
MessageBox.Show("Error occurred when rendering the page. Status: " + oGdPicturePDF.GetStat().ToString(), "Color Detection Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
oGdPictureImaging.TiffCloseMultiPageFile(tiffID);
oGdPictureImaging.ReleaseGdPictureImage(tiffID);
}
else
{
MessageBox.Show("The file can't be opened. Status: " + oGdPicturePDF.GetStat().ToString(), "Color Detection Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
oGdPicturePDF.Dispose();
oGdPictureImaging.Dispose();

This code sample is an example that illustrates how to use our SDK. Please adapt it to your specific use case.