DotImage allows users to create PDF files with different compression per frame. The PdfEncoder uses an event SetEncoderCompression. The PdfTranslator has a property which can be assigned a delegate method to do its processing.
PdfEncoder
C#
PdfEncoder pdf = new PdfEncoder();
pdf.SetEncoderCompression += new EncoderCompressionEventHandler(pdf_SetEncoderCompression);
void pdf_SetEncoderCompression(object sender, Atalasoft.Imaging.Codec.EncoderCompressionEventArgs e)
{
if (e.Image.PixelFormat == PixelFormat.Pixel1bppIndexed)
e.Compression = new PdfCodecCompression(PdfCompressionType.CcittGroup4);
else
e.Compression = new PdfCodecCompression(PdfCompressionType.Deflate);
}
VB.NET
Dim pdf As New PdfEncoder()
AddHandler pdf.SetEncoderCompression, AddressOf pdf_SetEncoderCompression
Private Sub pdf_SetEncoderCompression(ByVal sender As Object, ByVal e As Atalasoft.Imaging.Codec.EncoderCompressionEventArgs)
If e.Image.PixelFormat = PixelFormat.Pixel1bppIndexed Then
e.Compression = New PdfCodecCompression(PdfCompressionType.CcittGroup4)
End If
Else
e.Compression = New PdfCodecCompression(PdfCompressionType.Deflate)
End Else
End Sub
PdfTranslator
C#
PdfTranslator trans = new PdfTranslator();
trans.CompressionSelector = SetCompression;
private PdfImageCompressionType SetCompression(PixelFormat pixelformat)
{
if (pixelformat == PixelFormat.Pixel1bppIndexed)
return PdfImageCompressionType.CcittGroup4;
return PdfImageCompressionType.Flate;
}
VB.NET
Dim trans As New PdfTranslator()
trans.CompressionSelector = AddressOf SetCompression
Private Function SetCompression(ByVal pixelformat__1 As PixelFormat) As PdfImageCompressionType
If pixelformat__1 = PixelFormat.Pixel1bppIndexed Then
Return PdfImageCompressionType.CcittGroup4
End If
Return PdfImageCompressionType.Flate
End Function
Original Article:
Q10251 - HOWTO: Save a Pdf file with Compression