Optimizing image based PDF files

Q: We use PDFNet optimizer (pdftron.PDF.Optimizer) to compress
uploaded PDF files on our website. For some unkown reason some PDF
files are not very readable after users uploaded them to our system.

The \'Anything else\' box is the C# code being used to compress PDF
file.

  private static byte[] CompressPDF(byte[] btData)
    {
        byte[] db = null;
        int intLength = 0;
        PDFNet.Initialize();
        using (pdftron.PDF.PDFDoc doc = new pdftron.PDF.PDFDoc(btData,
btData.Length)) {
        doc.InitSecurityHandler();

        pdftron.PDF.Optimizer.ImageSettings color_image_settings = new
pdftron.PDF.Optimizer.ImageSettings();

color_image_settings.SetCompressionMode(pdftron.PDF.Optimizer.ImageSettings.
CompressionMode.e_jpeg);
        color_image_settings.SetQuality(1);
        color_image_settings.ForceChanges(true);
        color_image_settings.ForceRecompression(true);
        color_image_settings.SetImageDPI(65, 65);

        pdftron.PDF.Optimizer.ImageSettings grayscale_image_settings =
new pdftron.PDF.Optimizer.ImageSettings();

grayscale_image_settings.SetCompressionMode(pdftron.PDF.Optimizer.ImageS
etti
ngs.CompressionMode.e_jpeg);
        grayscale_image_settings.SetQuality(1);
        grayscale_image_settings.ForceChanges(true);
        grayscale_image_settings.ForceRecompression(true);
        grayscale_image_settings.SetImageDPI(150, 150);

        pdftron.PDF.Optimizer.MonoImageSettings mono_image_settings =
new pdftron.PDF.Optimizer.MonoImageSettings();

mono_image_settings.SetCompressionMode(pdftron.PDF.Optimizer.MonoImageSe
ttin
gs.CompressionMode.e_jbig2);
        mono_image_settings.ForceChanges(true);
        mono_image_settings.ForceRecompression(true);
        mono_image_settings.SetImageDPI(150, 150);

        pdftron.PDF.Optimizer.Optimize(doc, color_image_settings,
grayscale_image_settings, mono_image_settings);

        doc.Save(ref db, ref intLength,
pdftron.SDF.SDFDoc.SaveOptions.e_linearized);
   }
        return db;
    }
---------------------

A: The problem is that your output resolution is too low. Increasing
the DPI say to 150 would probably help a bit.

The reason why the PDF is not efficient is that the file is scanned
document is in color and using JPEG compression. The best option would
be to scan the document in B & W (1 bit per pixel) and using CCITT or
JBIG2 compression.

If you can only deal with the existing file you could use PDFNet to
rasterize the page to monochrome (1-BPC) TIFF (using PDFDraw class),
then add the rasterized TIFF to a new PDF.