---
title: "Recompress a PDF using color detection in C#"
canonical_url: "https://www.nutrient.io/guides/dotnet/samples/recompress-pdf-cs/"
md_url: "https://www.nutrient.io/guides/dotnet/samples/recompress-pdf-cs.md"
last_updated: "2026-05-21T17:12:02.215Z"
description: "Learn how to efficiently recompress PDF files with images using C#. Follow our example to optimize your scanned documents effectively."
---

# Recompress an existing PDF using color detection in C#

This example shows how to recompress an existing PDF document containing various images from a scanner.

[Get Started](https://www.nutrient.io/sdk/dotnet/getting-started.md)

[All Samples](https://www.nutrient.io/guides/dotnet/samples.md)

[Download](https://www.nutrient.io/guides/dotnet/downloads.md)

[Launch Demo](https://www.nutrient.io/demo/)

---

### C#

[C#](https://www.nutrient.io/guides/dotnet/samples/recompress-pdf-cs.md)

### VB.NET

[VB.NET](https://www.nutrient.io/guides/dotnet/samples/recompress-pdf-vbnet.md)

```cs

//We assume that GdPicture has been correctly installed and unlocked.
GdPicturePDF oGdPicturePDF = new GdPicturePDF();
oGdPicturePDF.SetCompressionForBitonalImage(PdfCompression.PdfCompressionJBIG2);
oGdPicturePDF.SetCompressionForColorImage(PdfCompression.PdfCompressionJPEG);
GdPictureImaging oGdPictureImaging = new GdPictureImaging();
GdPictureStatus status = oGdPicturePDF.LoadFromFile("c:\\input.pdf", true);
if (status == GdPictureStatus.OK)
{
   int PageCount = oGdPicturePDF.GetPageCount();
   for (int Page = 1; Page <= PageCount; Page++)
   {
	  oGdPicturePDF.SelectPage(Page);
	  for (int Image = 1; Image <= oGdPicturePDF.GetPageImageCount(); Image++)
	  {
		 int imageID = oGdPicturePDF.ExtractPageImage(Image);
		 if (oGdPicturePDF.GetStat() == GdPictureStatus.OK)
		 {
			oGdPictureImaging.ColorDetection(imageID, true, true, true);
			if (oGdPicturePDF.ReplaceImage(oGdPicturePDF.GetPageImageResName(Image - 1), imageID, false)!= GdPictureStatus.OK)
			   MessageBox.Show("Error: " + status.ToString(), "Color Detection Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
			oGdPictureImaging.ReleaseGdPictureImage(imageID);
		 }
		 else
			MessageBox.Show("Error: " + status.ToString(), "Color Detection Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
	  }
   }
   status = oGdPicturePDF.SaveToFile("c:\\output.pdf", true);
   if (status == GdPictureStatus.OK)
	  MessageBox.Show("Done!", "Color Detection Example", MessageBoxButtons.OK, MessageBoxIcon.Information);
   else
	  MessageBox.Show("The PDF file can't be saved. Error: " + status.ToString(), "Color Detection Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
   oGdPicturePDF.CloseDocument();
   oGdPictureImaging.Dispose();
}
else
   MessageBox.Show("The PDF file can't be loaded. Error: " + status.ToString(), "Color Detection Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
oGdPicturePDF.Dispose();

```

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

---

## Related pages

- [Saving images into folders based on their barcode](/guides/dotnet/samples/barcode-auto-sorting-vbnet.md)
- [Automatically rotate pages of a multipage TIFF file using OCR and C#](/guides/dotnet/samples/auto-rotate-tiff-cs.md)
- [Generate a multipage TIFF file using a compression mode per page in C#](/guides/dotnet/samples/create-multipage-tiff-cs.md)
- [Automatically rotate pages of a multipage TIFF file using OCR and VB.NET](/guides/dotnet/samples/auto-rotate-tiff-vbnet.md)
- [Saving images into folders based on their barcode](/guides/dotnet/samples/barcode-auto-sorting-cs.md)
- [Converting a Microsoft Word binary file document (DOC) to a Microsoft Word OpenXML document (DOCX) in C#](/guides/dotnet/samples/doc-to-docx-cs.md)
- [Convert PDFs, MS Office, and images to TIFF in C#](/guides/dotnet/samples/convert-to-tiff-cs.md)
- [Using an external OCR engine during PDF/OCR generation](/guides/dotnet/samples/integrate-omnipage-ocr-cs.md)
- [Merging two PDF documents by alternating pages from both files in C#](/guides/dotnet/samples/merge-pdf-alternate-pages-cs.md)
- [Merging two PDF documents by alternating pages from both files in VB.NET](/guides/dotnet/samples/merge-pdf-alternate-pages-vbnet.md)
- [Converting a multipage PDF to a multipage TIFF using color detection in C#](/guides/dotnet/samples/pdf-to-tiff-color-detection-cs.md)
- [Converting a multipage PDF to a multipage TIFF using color detection in VB.NET](/guides/dotnet/samples/pdf-to-tiff-color-detection-vbnet.md)
- [Recompress existing PDFs using MRC compression in C#](/guides/dotnet/samples/recompress-pdf-mrc-cs.md)
- [Recompress existing PDFs using MRC compression in VB.NET](/guides/dotnet/samples/recompress-pdf-mrc-vbnet.md)
- [Highlight and crop an image in C#](/guides/dotnet/samples/select-image-crop-area-cs.md)
- [Recompress an existing PDF using color detection in VB.NET](/guides/dotnet/samples/recompress-pdf-vbnet.md)
- [Highlight and crop an image in VB.NET](/guides/dotnet/samples/select-image-crop-area-vbnet.md)
- [Highlight a region in a PDF or an image in C#](/guides/dotnet/samples/select-pdf-image-region-cs.md)
- [Highlight a region in PDF or an image in VB.NET](/guides/dotnet/samples/select-pdf-image-region-vbnet.md)
- [Save bitonal TIFFs with VB.NET using photometric 0](/guides/dotnet/samples/tiff-photometric-vbnet.md)
- [Choosing the appropriate OCR zone in C#](/guides/dotnet/samples/select-ocr-zone-cs.md)
- [Save bitonal TIFF images with C# and CCITT4](/guides/dotnet/samples/tiff-photometric-cs.md)
- [Choosing the appropriate OCR zone in VB.NET](/guides/dotnet/samples/select-ocr-zone-vbnet.md)
- [Convert a multipage TIFF to a multipage JBIG2 in C#](/guides/dotnet/samples/tiff-to-jbig2-cs.md)
- [Convert a multipage TIFF to a multipage JBIG2 in VB.NET](/guides/dotnet/samples/tiff-to-jbig2-vbnet.md)

