logo
Welcome Guest! To enable all features please Login or Register.

Notification

Icon
Error

Post a reply
From:
Message:

Maximum number of characters in each post is: 32767
Bold Italic Underline   Highlight Quote Choose Language for Syntax Highlighting Insert Image Insert an existing Attachment or upload a new File... Create Link   Unordered List Ordered List   Left Justify Center Justify Right Justify   Outdent Indent   More BBCode Tags
Font Color Font Size
Security Image:
Enter The Letters From The Security Image:
  Preview Post Cancel

Last 10 Posts (In reverse order)
Paul Rayman Posted: Wednesday, November 23, 2016 5:13:00 PM(UTC)
 
Yes. Please look at following code

Code:

void Main(string[] args)
{
    PdfCommon.Initialize();
    Image tiff = null;
    using (var doc = PdfDocument.Load(@"d:\0\test_big.pdf"))
    {
        int dpi = 96;
        int i = 1;
        foreach (var page in doc.Pages)
        {
            int width = (int)(page.Width / 72.0 * dpi);
            int height = (int)(page.Height / 72.0 * dpi);
            using (var bitmap = new PdfBitmap(width, height, true))
            {
                bitmap.FillRect(0, 0, width, height, Color.White);
                page.Render(bitmap, 0, 0, width, height, PageRotate.Normal, RenderFlags.FPDF_LCD_TEXT);

                if (tiff == null)
                    tiff = CreateTiffFromBitmap(bitmap.Image, @"d:\0\test_big.tif");
                else
                    AddFrameToTiff(tiff, bitmap.Image);
            }
            page.Dispose();
            Console.WriteLine(string.Format("Process page {0}", i++));
        }
        if (tiff != null)
            FlushTiff(tiff);
    }
}

public Image CreateTiffFromBitmap(Image bitmap, string pathToTiff)
{
    //Start with the first bitmap by save the bitmap to memory as tiff
    using (MemoryStream byteStream = new MemoryStream())
    {
        bitmap.Save(byteStream, ImageFormat.Tiff);

        //Put Tiff into another Image object
        Image tiff = Image.FromStream(byteStream);

        //Prepare encoders:
        ImageCodecInfo encoderInfo = ImageCodecInfo.GetImageEncoders().First(i => i.MimeType == "image/tiff");

        EncoderParameters encoderParams = new EncoderParameters(2);
        EncoderParameter parameter = new EncoderParameter(Encoder.Compression, (long)EncoderValue.CompressionLZW);
        encoderParams.Param[0] = parameter;
        parameter = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.MultiFrame);
        encoderParams.Param[1] = parameter;

        var ret = new MemoryStream();
        //Save to file
        tiff.Save(pathToTiff, encoderInfo, encoderParams);
        return tiff;
    }
}

public void AddFrameToTiff(Image tiff, Image bitmap)
{
    //For subsequent pages, prepare encoders:
    EncoderParameters EncoderParams = new EncoderParameters(3);
    EncoderParameter SaveEncodeParam = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.FrameDimensionPage);
    EncoderParameter CompressionEncodeParam = new EncoderParameter(Encoder.Compression, (long)EncoderValue.CompressionLZW);
    EncoderParameter QualityEncodeParam = new EncoderParameter(Encoder.Quality, 100L);
    EncoderParams.Param[0] = CompressionEncodeParam;
    EncoderParams.Param[1] = SaveEncodeParam;
    EncoderParams.Param[2] = QualityEncodeParam;
    tiff.SaveAdd(bitmap, EncoderParams);
}

public void FlushTiff(Image tiff)
{ 
    //Finally flush the file:
    EncoderParameter SaveEncodeParam = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.Flush);
    var EncoderParams = new EncoderParameters(1);
    EncoderParams.Param[0] = SaveEncodeParam;
    tiff.SaveAdd(EncoderParams);
}
Stokara Posted: Wednesday, November 23, 2016 9:52:11 AM(UTC)
 
I need to be able to save a Pdf file as a Tiff file. Is this doable with the SDK?