Example #1
0
        static public void DoConversion(string file, string password, string folder, int dpi, string pagerange, ImageType iType)
        {
            System.Drawing.Imaging.ImageFormat format;
            string extension = null;

            // Setup the license
            SolidFramework.License.ActivateDeveloperLicense();

            // Set the output image type
            switch (iType)
            {
            case ImageType.BMP:
                format    = System.Drawing.Imaging.ImageFormat.Bmp;
                extension = "bmp";
                break;

            case ImageType.JPG:
                format    = System.Drawing.Imaging.ImageFormat.Jpeg;
                extension = "jpg";
                break;

            case ImageType.PNG:
                format    = System.Drawing.Imaging.ImageFormat.Png;
                extension = "png";
                break;

            case ImageType.TIFF:
                format    = System.Drawing.Imaging.ImageFormat.Tiff;
                extension = "tif";
                break;

            default:
                throw new ArgumentException("DoConversion: ImageType not known");
            }

            // Load up the document
            SolidFramework.Pdf.PdfDocument doc =
                new SolidFramework.Pdf.PdfDocument(file, password);
            doc.Open();

            // Setup the outputfolder
            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }

            // Setup the file string.
            string filename = folder + Path.DirectorySeparatorChar +
                              Path.GetFileNameWithoutExtension(file);

            // Get our pages.
            List <SolidFramework.Pdf.Plumbing.PdfPage> Pages =
                new List <SolidFramework.Pdf.Plumbing.PdfPage>(doc.Catalog.Pages.PageCount);

            SolidFramework.Pdf.Catalog catalog =
                (SolidFramework.Pdf.Catalog)SolidFramework.Pdf.Catalog.Create(doc);
            SolidFramework.Pdf.Plumbing.PdfPages pages =
                (SolidFramework.Pdf.Plumbing.PdfPages)catalog.Pages;
            ProcessPages(ref pages, ref Pages);

            // Check for page ranges
            PageRange ranges      = null;
            bool      bHaveRanges = false;

            if (!string.IsNullOrEmpty(pagerange))
            {
                bHaveRanges = PageRange.TryParse(pagerange, out ranges);
            }

            if (bHaveRanges)
            {
                int[] pageArray = ranges.ToArray();
                foreach (int number in pageArray)
                {
                    CreateImageFromPage(Pages[number], dpi, filename, number,
                                        extension, format);
                    Console.WriteLine(string.Format("Processed page {0} of {1}", number,
                                                    Pages.Count));
                }
            }
            else
            {
                // For each page, save off a file.
                int pageIndex = 0;
                foreach (SolidFramework.Pdf.Plumbing.PdfPage page in Pages)
                {
                    // Update the page number.
                    pageIndex++;

                    CreateImageFromPage(page, dpi, filename, pageIndex, extension, format);
                    Console.WriteLine(string.Format("Processed page {0} of {1}", pageIndex,
                                                    Pages.Count));
                }
            }
        }