Recompress existing PDFs using MRC compression in VB.NET
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.
'We assume that GdPicture has been correctly installed and unlocked.Using pdf As GdPicturePDF = New GdPicturePDF() Dim status As GdPictureStatus = pdf.LoadFromFile("source.pdf", False) If status = GdPictureStatus.OK Then '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) Dim pageCount As Integer = pdf.GetPageCount() status = pdf.GetStat() Dim pageNo As Integer = 1 While (pageNo <= pageCount) AndAlso (status = GdPictureStatus.OK) status = pdf.SelectPage(pageNo) If status = GdPictureStatus.OK Then 'We can ignore hiddent text in the example. Dim isPageImage As Boolean = pdf.IsPageImage(True) status = pdf.GetStat() If status = GdPictureStatus.OK Then If isPageImage Then 'As the page is image-based, the image number is 1 and we can extract this image. Dim imageID As Integer = pdf.ExtractPageImage(1) status = pdf.GetStat() If status = GdPictureStatus.OK Then 'Getting the resource name of the extracted image, the index of the image to be used here is 0. Dim imageResName As String = pdf.GetPageImageResName(0) status = pdf.GetStat() If status = GdPictureStatus.OK Then 'The original image is replaced with the compressed image on the whole page surface here. status = pdf.ReplaceImageMRC(imageResName, imageID) 'You need to dispose of the used image resource here. GdPictureDocumentUtilities.DisposeImage(imageID) End If End If End If End If End If pageNo += 1 End While If status = GdPictureStatus.OK Then status = pdf.SaveToFile("dest.pdf", True) If status = GdPictureStatus.OK Then 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]) End If Else MessageBox.Show("The example has NOT been followed successfully. Status: " + status.ToString(), "MRC Compression Example", MessageBoxButtons.OK, MessageBoxIcon.[Error]) End If Else MessageBox.Show("The file can't be loaded. Status: " + status.ToString(), "MRC Compression Example", MessageBoxButtons.OK, MessageBoxIcon.[Error]) End IfEnd Using
This code sample is an example that illustrates how to use our SDK. Please adapt it to your specific use case.