---
title: "Recompress PDFs using MRC compression in C#"
canonical_url: "https://www.nutrient.io/guides/dotnet/samples/recompress-pdf-mrc-cs/"
md_url: "https://www.nutrient.io/guides/dotnet/samples/recompress-pdf-mrc-cs.md"
last_updated: "2026-05-21T17:12:02.215Z"
description: "Learn how to recompress complex PDF documents using MRC compression to significantly reduce file size while maintaining quality."
---

# Recompress existing PDFs using MRC compression in C#

Mixed raster content (MRC) compression is useful for compressing complex PDF documents to reduce their file size. This example shows how to recompress existing PDF documents, benefiting from the enhanced MRC compression mechanism.

[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-mrc-cs.md)

### VB.NET

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

```cs

//We assume that GdPicture has been correctly installed and unlocked.
using (GdPicturePDF pdf = new GdPicturePDF())
{
   GdPictureStatus status = pdf.LoadFromFile("source.pdf", false);
   if (status == GdPictureStatus.OK)
   {
	  //Setting MRC options.
	  pdf.SetMRCImageBackgroundResolution(100);
	  //You can set it to true to obtain a better quality rendering, but it produces a bigger file.
	  pdf.SetMRCPreserveSmoothing(false);
	  //You can also set the compression values for images here, for example:
	  pdf.SetCompressionForBitonalImage(PdfCompression.PdfCompressionJBIG2);
	  pdf.SetCompressionForColorImage(PdfCompression.PdfCompressionJPEG2000);
	  //Using the negative value permits to specify better quality factor versus a compression rate.
	  pdf.SetJpeg2000Quality(-60);
	  int pageCount = pdf.GetPageCount();
	  status = pdf.GetStat();
	  for (int pageNo = 1; (pageNo <= pageCount) && (status == GdPictureStatus.OK); pageNo++)
	  {
		 status = pdf.SelectPage(pageNo);
		 if (status == GdPictureStatus.OK)
		 {
			//We can ignore hiddent text in the example.
			bool isPageImage = pdf.IsPageImage(true);
			status = pdf.GetStat();
			if (status == GdPictureStatus.OK)
			{
			   if (isPageImage)
			   {
				  //As the page is image-based, the image number is 1 and we can extract this image.
				  int imageID = pdf.ExtractPageImage(1);
				  status = pdf.GetStat();
				  if (status == GdPictureStatus.OK)
				  {
					 //Getting the resource name of the extracted image, the index of the image to be used here is 0.
					 string imageResName = pdf.GetPageImageResName(0);
					 status = pdf.GetStat();
					 if (status == GdPictureStatus.OK)
					 {
						//The original image is replaced with the compressed image on the whole page surface here.
						status = pdf.ReplaceImageMRC(imageResName, imageID);
						//You need to dispose the used image resource here.
						GdPictureDocumentUtilities.DisposeImage(imageID);
					 }
				  }
			   }
			}
		 }
	  }
	  if (status == GdPictureStatus.OK)
	  {
		 status = pdf.SaveToFile("dest.pdf", true);
		 if (status == GdPictureStatus.OK)
			MessageBox.Show("The example has been followed successfully and the file has been saved.", "MRC Compression Example", MessageBoxButtons.OK, MessageBoxIcon.Information);
		 else
			MessageBox.Show("The example has been followed successfully, but the file can't be saved. Status: " + status.ToString(), "MRC Compression Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
	  }
	  else
		 MessageBox.Show("The example has NOT been followed successfully. Status: " + status.ToString(), "MRC Compression Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
   }
   else
	  MessageBox.Show("The file can't be loaded. Status: " + status.ToString(), "MRC Compression Example", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

```

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)
- [Recompress an existing PDF using color detection in C#](/guides/dotnet/samples/recompress-pdf-cs.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 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)

