MRC Compression in C#
Mixed raster content (MRC) is a way to compress images with mixed content. For a more thorough overview, see the MRC Wikipedia article.
GdPicture.NET Library uses advanced MRC compression techniques to reduce the size of structured documents that mix text, graphics, and images, without losing quality.
For more information on hyper-compression, check out our demo video below.
Enabling MRC Compression
Our MRC compression engine is based on MRC compression techniques (hyper-compression), and it can both reduce the size of images and improve rendering quality. Using image segmentation, it compresses areas with the optimum algorithm based on their characteristics.
The code below shows how to use the GdPicturePDFReducer
class, together with the PDFReducerConfiguration
class, to hyper-compress a document:
GdPicturePDFReducer gdpicturePDFReducer = new GdPicturePDFReducer(); // The `PDFReducerConfiguration` class provides different properties and options for compression. gdpicturePDFReducer.PDFReducerConfiguration.Author = "GdPicture.NET PDF Reducer SDK"; gdpicturePDFReducer.PDFReducerConfiguration.Producer = "GdPicture.NET 14"; gdpicturePDFReducer.PDFReducerConfiguration.ProducerName = "Orpalis"; gdpicturePDFReducer.PDFReducerConfiguration.Title = "MRC Compression"; // When compressing your PDF files, you can decide which version of PDF to use. gdpicturePDFReducer.PDFReducerConfiguration.OutputFormat = PDFReducerPDFVersion.PdfVersionRetainExisting; // By selecting required options through the `PDFReducerConfiguration` class, you can enable or disable the features you want. gdpicturePDFReducer.PDFReducerConfiguration.RecompressImages = true; // MRC compression. gdpicturePDFReducer.PDFReducerConfiguration.EnableMRC = true; gdpicturePDFReducer.PDFReducerConfiguration.DownscaleResolutionMRC = 200; gdpicturePDFReducer.PDFReducerConfiguration.PreserveSmoothing = true; long inputSize = new System.IO.FileInfo("input.pdf").Length; // Processing the specified document. GdPictureStatus status = gdpicturePDFReducer.ProcessDocument("input.pdf", "output.pdf"); if (status == GdPictureStatus.OK) { long outputSize = new System.IO.FileInfo("output.pdf").Length; int ratio = 100 - (int)(outputSize * 100 / inputSize); MessageBox.Show("The compression ratio is " + ratio + "%.\n" + inputSize / 100 + "KB -> " + outputSize / 100 + "KB", "Optimizing PDF documents", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("The compression failed. Error: " + gdpicturePDFReducer.GetReducerStat(), "Optimizing PDF documents", MessageBoxButtons.OK, MessageBoxIcon.Error); // You can also check reported warnings or the page number when an error is reported. }
Dim gdpicturePDFReducer As GdPicturePDFReducer = New GdPicturePDFReducer() 'The `PDFReducerConfiguration` class provides different properties and options for compression. gdpicturePDFReducer.PDFReducerConfiguration.Author = "GdPicture.NET PDF Reducer SDK" gdpicturePDFReducer.PDFReducerConfiguration.Producer = "GdPicture.NET 14" gdpicturePDFReducer.PDFReducerConfiguration.ProducerName = "Orpalis" gdpicturePDFReducer.PDFReducerConfiguration.Title = "MRC Compression" 'When compressing your PDF files, you can decide which version of PDF to use. gdpicturePDFReducer.PDFReducerConfiguration.OutputFormat = PDFReducerPDFVersion.PdfVersionRetainExisting 'By selecting required options through the `PDFReducerConfiguration` class, you can enable or disable the features you want. gdpicturePDFReducer.PDFReducerConfiguration.RecompressImages = True 'MRC compression. gdpicturePDFReducer.PDFReducerConfiguration.EnableMRC = True gdpicturePDFReducer.PDFReducerConfiguration.DownscaleResolutionMRC = 200 gdpicturePDFReducer.PDFReducerConfiguration.PreserveSmoothing = True Dim inputSize As Long = New System.IO.FileInfo("input.pdf").Length 'Processing the specified document. Dim status As GdPictureStatus = gdpicturePDFReducer.ProcessDocument("input.pdf", "output.pdf") If status = GdPictureStatus.OK Then Dim outputSize As Long = New System.IO.FileInfo("output.pdf").Length Dim ratio As Integer = 100 - CInt((outputSize * 100 / inputSize)) MessageBox.Show("The compression ratio is " + ratio + "%." + vbCrLf + inputSize / 100 + "KB -> " + outputSize / 100 + "KB", "Optimizing PDF documents", MessageBoxButtons.OK, MessageBoxIcon.Information) Else MessageBox.Show("The compression failed. Error: " + gdpicturePDFReducer.GetReducerStat(), "Optimizing PDF documents", MessageBoxButtons.OK, MessageBoxIcon.Error) 'You can also check reported warnings or the page number when an error is reported. End If