Exemplo n.º 1
0
        /// <summary>
        /// Converts a set of <see cref="FixedPage"/>s from at least one XPS document into a <see cref="PdfDocument"/>.
        /// This method can be used to merge multiple XPS documents into a single PDF.
        /// </summary>
        /// <param name="pages">A collection of FixedPages to render to PDF.</param>
        /// <returns>A PDF document that contains the converted version of the pages passed in.</returns>
        public static PdfDocument Convert(IEnumerable <FixedPage> pages)
        {
            if (pages == null)
            {
                throw new ArgumentNullException(nameof(pages));
            }

            PdfDocument pdfDocument = new PdfDocument();
            PdfRenderer renderer    = new PdfRenderer();

            int pageIndex = 0;

            foreach (FixedPage page in pages)
            {
                if (page == null)
                {
                    continue;
                }
                Debug.WriteLine(String.Format("  page={0}", pageIndex));
                PdfPage pdfPage = renderer.CreatePage(pdfDocument, page);
                renderer.RenderPage(pdfPage, page);
                pageIndex++;

#if DEBUG
                // stop at page...
                if (pageIndex == 50)
                {
                    break;
                }
#endif
            }

            return(pdfDocument);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Implements the PDF file to XPS file conversion.
        /// </summary>
        public static void Convert(XpsDocument xpsDocument, string pdfFilename, int docIndex)
        {
            if (xpsDocument == null)
            {
                throw new ArgumentNullException("xpsDocument");
            }

            if (String.IsNullOrEmpty(pdfFilename))
            {
                throw new ArgumentNullException("pdfFilename");
            }

            FixedDocument fixedDocument = xpsDocument.GetDocument();
            PdfDocument   pdfDocument   = new PdfDocument();
            PdfRenderer   renderer      = new PdfRenderer();

            int pageIndex = 0;

            foreach (FixedPage page in fixedDocument.Pages)
            {
                if (page == null)
                {
                    continue;
                }
                Debug.WriteLine(String.Format("  doc={0}, page={1}", docIndex, pageIndex));
                PdfPage pdfPage = renderer.CreatePage(pdfDocument, page);
                renderer.RenderPage(pdfPage, page);
                pageIndex++;
            }
            pdfDocument.Save(pdfFilename);
        }
Exemplo n.º 3
0
        public static void ConvertToPdfInMemory(XpsDocument xpsDocument, MemoryStream pdfMemoryStream, int docIndex)
        {
            if (xpsDocument == null)
            {
                throw new ArgumentNullException("xpsDocument");
            }
            if (pdfMemoryStream == null)
            {
                throw new ArgumentNullException("pdfMemoryStream");
            }

            FixedDocument fixedDocument = xpsDocument.GetDocument();
            PdfDocument   pdfDocument   = new PdfDocument();
            PdfRenderer   renderer      = new PdfRenderer();

            int pageIndex = 0;

            foreach (FixedPage page in fixedDocument.Pages)
            {
                if (page == null)
                {
                    continue;
                }
                PdfPage pdfPage = renderer.CreatePage(pdfDocument, page);
                renderer.RenderPage(pdfPage, page);
                pageIndex++;
            }
            pdfDocument.Save(pdfMemoryStream, false);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Implements the PDF file to XPS file conversion.
        /// </summary>
        private static void DoConvert(XpsDocument xpsDocument, string pdfFilename, int docIndex)
        {
            if (xpsDocument == null)
            {
                throw new ArgumentNullException("xpsDocument");
            }

            if (String.IsNullOrEmpty(pdfFilename))
            {
                throw new ArgumentNullException("pdfFilename");
            }

            var seq         = xpsDocument.GetFixedDocumentSequence();
            var pdfDocument = new PdfDocument();
            var renderer    = new PdfRenderer();

            int pageIndex = 0;

            var refs = seq.References;

            var docs = refs.Select(r => r.GetDocument(false));

            foreach (var fixedDocument in docs)
            {
                foreach (var page in fixedDocument.Pages)
                {
                    if (page == null)
                    {
                        continue;
                    }
                    var fixedPage = page.GetPageRoot(false);
                    if (fixedPage == null)
                    {
                        continue;
                    }
                    Debug.WriteLine(String.Format("  doc={0}, page={1}", docIndex, pageIndex));
                    PdfPage pdfPage = renderer.CreatePage(pdfDocument, fixedPage);
                    renderer.RenderPage(pdfPage, fixedPage);
                    pageIndex++;

#if DEBUG
                    // stop at page...
                    if (pageIndex == 50)
                    {
                        break;
                    }
#endif
                }
            }
            pdfDocument.Save(pdfFilename);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Implements the PDF file to XPS file conversion.
        /// </summary>
        public static void Convert(XpsDocument xpsDocument, string pdfFilename, int docIndex)
        {
            if (xpsDocument == null)
            {
                throw new ArgumentNullException("xpsDocument");
            }

            if (String.IsNullOrEmpty(pdfFilename))
            {
                throw new ArgumentNullException("pdfFilename");
            }

            FixedDocument fixedDocument = xpsDocument.GetDocument();
            PdfDocument   pdfDocument   = new PdfDocument();
            PdfRenderer   renderer      = new PdfRenderer();

            int pageIndex = 0;

            foreach (FixedPage page in fixedDocument.Pages)
            {
                if (page == null)
                {
                    continue;
                }
                Debug.WriteLine(String.Format("  doc={0}, page={1}", docIndex, pageIndex));
                PdfPage pdfPage = renderer.CreatePage(pdfDocument, page);
                renderer.RenderPage(pdfPage, page);
                pageIndex++;

/* DEBUG constant must be active in order to avoid problem with partial pages.
 * See: http://www.nathanpjones.com/wp/2013/03/output-to-pdf-in-wpf-for-free/
 * So, the next limitation is no longer possible...
 #if DEBUG
 *          // stop at page...
 *          if (pageIndex == 50)
 *              break;
 #endif */
            }
            pdfDocument.Save(pdfFilename);
        }
        public void TestRenderingAllSamples()
        {
            string path = "PdfSharp/testing/SampleXpsDocuments_1_0";
            string dir  = GetDirectory(path);

            if (dir == null)
            {
                throw new FileNotFoundException("Path not found: " + path + ". Follow instructions in ../../../SampleXpsDocuments_1_0/!readme.txt to download samples from the Internet.");
            }
            if (!Directory.Exists(dir))
            {
                throw new FileNotFoundException("Path not found: " + path + ". Follow instructions in ../../../SampleXpsDocuments_1_0/!readme.txt to download samples from the Internet.");
            }
#if true
            string[] files = Directory.GetFiles(dir, "*.xps", SearchOption.AllDirectories);
#else
            string[] files = Directory.GetFiles("../../../XPS-TestDocuments", "*.xps", SearchOption.AllDirectories);
#endif
            //files = Directory.GetFiles(@"G:\!StLa\PDFsharp-1.20\SourceCode\PdfSharp\testing\SampleXpsDocuments_1_0\MXDW", "*.xps", SearchOption.AllDirectories);
            //files = Directory.GetFiles(@"G:\!StLa\PDFsharp-1.20\SourceCode\PdfSharp\testing\SampleXpsDocuments_1_0\Handcrafted", "*.xps", SearchOption.AllDirectories);
            //files = Directory.GetFiles(@"G:\!StLa\PDFsharp-1.20\SourceCode\PdfSharp\testing\SampleXpsDocuments_1_0\Showcase", "*.xps", SearchOption.AllDirectories);
            //files = Directory.GetFiles(@"G:\!StLa\PDFsharp-1.20\SourceCode\PdfSharp\testing\SampleXpsDocuments_1_0\QualityLogicMinBar", "*.xps", SearchOption.AllDirectories);


            if (files.Length == 0)
            {
                throw new Exception("No sample file found. Copy sample files to the \"SampleXpsDocuments_1_0\" folder!");
            }

            foreach (string filename in files)
            {
                // No negative tests here
                if (filename.Contains("\\ConformanceViolations\\"))
                {
                    continue;
                }

                //if (filename.Contains("\\Showcase\\"))
                //  continue;

                //if (!filename.Contains("Vista"))
                //  continue;

                Debug.WriteLine(filename);
                try
                {
                    int         docIndex = 0;
                    XpsDocument xpsDoc   = XpsDocument.Open(filename);
                    foreach (FixedDocument doc in xpsDoc.Documents)
                    {
                        try
                        {
                            PdfDocument pdfDoc   = new PdfDocument();
                            PdfRenderer renderer = new PdfRenderer();

                            int pageIndex = 0;
                            foreach (FixedPage page in doc.Pages)
                            {
                                if (page == null)
                                {
                                    continue;
                                }
                                Debug.WriteLine(String.Format("  doc={0}, page={1}", docIndex, pageIndex));
                                PdfPage pdfPage = renderer.CreatePage(pdfDoc, page);
                                renderer.RenderPage(pdfPage, page);
                                pageIndex++;

                                // stop at page...
                                if (pageIndex == 50)
                                {
                                    break;
                                }
                            }

                            string pdfFilename = IOPath.GetFileNameWithoutExtension(filename);
                            if (docIndex != 0)
                            {
                                pdfFilename += docIndex.ToString();
                            }
                            pdfFilename += ".pdf";
                            pdfFilename  = IOPath.Combine(IOPath.GetDirectoryName(filename), pdfFilename);

                            pdfDoc.Save(pdfFilename);
                        }
                        catch (Exception ex)
                        {
                            Debug.WriteLine("Exception: " + ex.Message);
                        }
                        docIndex++;
                    }
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                    GetType();
                }
            }
        }
        public void TestRenderingTypographySamples()
        {
#if true
            string path = "PdfSharp/testing/SampleXpsDocuments_1_0/MXDW";
            string dir  = GetDirectory(path);
            if (dir == null)
            {
                throw new FileNotFoundException("Path not found: " + path + ". Follow instructions in ../../../SampleXpsDocuments_1_0/!readme.txt to download samples from the Internet.");
            }
            if (!Directory.Exists(dir))
            {
                throw new FileNotFoundException("Path not found: " + path + ". Follow instructions in ../../../SampleXpsDocuments_1_0/!readme.txt to download samples from the Internet.");
            }

            string[] files = Directory.GetFiles(dir, "*Poster.xps", SearchOption.TopDirectoryOnly);

            if (files.Length == 0)
            {
                throw new Exception("No sample file found.");
            }

            foreach (string filename in files)
            {
                //if (!filename.EndsWith("CalibriPoster.xps"))
                //  continue;

                Debug.WriteLine(filename);
                try
                {
                    XpsDocument xpsDoc = XpsDocument.Open(filename);

                    int docIndex = 0;
                    foreach (FixedDocument doc in xpsDoc.Documents)
                    {
                        PdfDocument pdfDocument = new PdfDocument();
                        //PdfRenderer renderer = new PdfRenderer();
                        XpsConverter converter = new XpsConverter(pdfDocument, xpsDoc);

                        int pageIndex = 0;
                        foreach (FixedPage page in doc.Pages)
                        {
                            Debug.WriteLine(String.Format("  doc={0}, page={1}", docIndex, pageIndex));

                            // HACK: API is senseless
                            PdfPage pdfPage = converter.CreatePage(pageIndex);
                            converter.RenderPage(pdfPage, pageIndex);
                            pageIndex++;
                        }

                        string pdfFilename = IOPath.GetFileNameWithoutExtension(filename);
                        if (docIndex != 0)
                        {
                            pdfFilename += docIndex.ToString();
                        }
                        pdfFilename += ".pdf";
                        pdfFilename  = IOPath.Combine(IOPath.GetDirectoryName(filename), pdfFilename);

                        pdfDocument.Save(pdfFilename);
                        docIndex++;
                    }
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                    GetType();
                }
            }
#else
            //string data = "2.11592697149066,169.466971230985 7.31945717924454E-09,161.067961604689";
            //TokenizerHelper helper = new TokenizerHelper(data);
            //string t = helper.NextTokenRequired();
            //t = helper.NextTokenRequired();
            //t = helper.NextTokenRequired();
            //t = helper.NextTokenRequired();

            string[] files = Directory.GetFiles("../../../../../testing/PdfSharp.Xps.UnitTests/Typography", "*.xps", SearchOption.AllDirectories);

            //files = Directory.GetFiles(@"G:\!StLa\PDFsharp-1.10\OpenSource\PDFsharp\WPF\SampleXpsDocuments_1_0\FontPoster", "*.xps", SearchOption.AllDirectories);

            if (files.Length == 0)
            {
                throw new Exception("No sample file found.");
            }

            foreach (string filename in files)
            {
                // No negative tests here
                if (filename.Contains("\\ConformanceViolations\\"))
                {
                    continue;
                }

                //if (!filename.EndsWith("CalibriPoster.xps"))
                //  continue;

                Debug.WriteLine(filename);
                try
                {
#if true
                    XpsDocument xpsDoc = XpsDocument.Open(filename);

                    int docIndex = 0;
                    foreach (FixedDocument doc in xpsDoc.Documents)
                    {
                        PdfDocument pdfDocument = new PdfDocument();
                        //PdfRenderer renderer = new PdfRenderer();
                        XpsConverter converter = new XpsConverter(pdfDocument, xpsDoc);

                        int pageIndex = 0;
                        foreach (FixedPage page in doc.Pages)
                        {
                            Debug.WriteLine(String.Format("  doc={0}, page={1}", docIndex, pageIndex));

                            // HACK: API is senseless
                            PdfPage pdfPage = converter.CreatePage(pageIndex);
                            converter.RenderPage(pdfPage, pageIndex);
                            pageIndex++;
                        }

                        string pdfFilename = IOPath.GetFileNameWithoutExtension(filename);
                        if (docIndex != 0)
                        {
                            pdfFilename += docIndex.ToString();
                        }
                        pdfFilename += ".pdf";
                        pdfFilename  = IOPath.Combine(IOPath.GetDirectoryName(filename), pdfFilename);

                        pdfDocument.Save(pdfFilename);
                        docIndex++;
                    }
#else
                    int         docIndex = 0;
                    XpsDocument xpsDoc   = XpsDocument.Open(filename);
                    foreach (FixedDocument doc in xpsDoc.Documents)
                    {
                        PdfDocument pdfDoc   = new PdfDocument();
                        PdfRenderer renderer = new PdfRenderer();

                        int pageIndex = 0;
                        foreach (FixedPage page in doc.Pages)
                        {
                            Debug.WriteLine(String.Format("  doc={0}, page={1}", docIndex, pageIndex));
                            PdfPage pdfPage = renderer.CreatePage(pdfDoc, page);
                            renderer.RenderPage(pdfPage, page);
                            pageIndex++;
                        }

                        string pdfFilename = IOPath.GetFileNameWithoutExtension(filename);
                        if (docIndex != 0)
                        {
                            pdfFilename += docIndex.ToString();
                        }
                        pdfFilename += ".pdf";
                        pdfFilename  = IOPath.Combine(IOPath.GetDirectoryName(filename), pdfFilename);

                        pdfDoc.Save(pdfFilename);
                        docIndex++;
                    }
#endif
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                    GetType();
                }
            }
#endif
        }
Exemplo n.º 8
0
        public void TestExternalXpsFiles()
        {
            string path = "SampleXpsDocuments_1_0";
            string dir  = (path);

            if (dir == null)
            {
                Assert.Inconclusive("Path not found: " + path + ". Follow instructions in ../../../SampleXpsDocuments_1_0/!readme.txt to download samples from the Internet.");
                return;
            }
            if (!Directory.Exists(dir))
            {
                Assert.Inconclusive("Path not found: " + path + ". Follow instructions in ../../../SampleXpsDocuments_1_0/!readme.txt to download samples from the Internet.");
                return;
            }

            string[] files = Directory.GetFiles(dir, "*.xps", SearchOption.AllDirectories);

            if (files.Length == 0)
            {
                Assert.Inconclusive("No sample file found. Follow instructions in ../../../SampleXpsDocuments_1_0/!readme.txt to download samples from the Internet.");
                return;
            }

            foreach (string filename in files)
            {
                // No negative tests here
                if (filename.Contains("\\ConformanceViolations\\"))
                {
                    continue;
                }

                Debug.WriteLine(filename);
                try
                {
                    int docIndex = 0;
                    using (XpsDocument xpsDoc = XpsDocument.Open(filename))
                    {
                        foreach (FixedDocument doc in xpsDoc.Documents)
                        {
                            PdfDocument pdfDoc   = new PdfDocument();
                            PdfRenderer renderer = new PdfRenderer();

                            int pageIndex = 0;
                            foreach (FixedPage page in doc.Pages)
                            {
                                Debug.WriteLine(String.Format("  doc={0}, page={1}", docIndex, pageIndex));
                                PdfPage pdfPage = renderer.CreatePage(pdfDoc, page);
                                renderer.RenderPage(pdfPage, page);
                                pageIndex++;
                            }

                            string pdfFilename = IOPath.GetFileNameWithoutExtension(filename);
                            if (docIndex != 0)
                            {
                                pdfFilename += docIndex.ToString();
                            }
                            pdfFilename += ".pdf";
                            pdfFilename  = IOPath.Combine(IOPath.GetDirectoryName(filename), pdfFilename);

                            pdfDoc.Save(pdfFilename);
                            docIndex++;
                        }
                    }
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                    GetType();
                }
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Implements the PDF file to XPS file conversion.
        /// </summary>
        public static void Convert(string xpsFilename, string pdfFilename, int docIndex, bool createComparisonDocument)
        {
            if (String.IsNullOrEmpty(xpsFilename))
            {
                throw new ArgumentNullException("xpsFilename");
            }

            if (String.IsNullOrEmpty(pdfFilename))
            {
                pdfFilename = xpsFilename;
                if (IOPath.HasExtension(pdfFilename))
                {
                    pdfFilename = pdfFilename.Substring(0, pdfFilename.LastIndexOf('.'));
                }
                pdfFilename += ".pdf";
            }

            XpsDocument xpsDocument = null;

            try
            {
                xpsDocument = XpsDocument.Open(xpsFilename);
                FixedDocument fixedDocument = xpsDocument.GetDocument();
                PdfDocument   pdfDocument   = new PdfDocument();
                PdfRenderer   renderer      = new PdfRenderer();

                int pageIndex = 0;
                foreach (FixedPage page in fixedDocument.Pages)
                {
                    if (page == null)
                    {
                        continue;
                    }
                    Debug.WriteLine(String.Format("  doc={0}, page={1}", docIndex, pageIndex));
                    PdfPage pdfPage = renderer.CreatePage(pdfDocument, page);
                    renderer.RenderPage(pdfPage, page);
                    pageIndex++;

#if DEBUG
                    // stop at page...
                    if (pageIndex == 50)
                    {
                        break;
                    }
#endif
                }
                pdfDocument.Save(pdfFilename);
                xpsDocument.Close();
                xpsDocument = null;

                if (createComparisonDocument)
                {
                    System.Windows.Xps.Packaging.XpsDocument       xpsDoc = new System.Windows.Xps.Packaging.XpsDocument(xpsFilename, FileAccess.Read);
                    System.Windows.Documents.FixedDocumentSequence docSeq = xpsDoc.GetFixedDocumentSequence();
                    if (docSeq == null)
                    {
                        throw new InvalidOperationException("docSeq");
                    }

                    XPdfForm    form = XPdfForm.FromFile(pdfFilename);
                    PdfDocument pdfComparisonDocument = new PdfDocument();


                    pageIndex = 0;
                    foreach (PdfPage page in pdfDocument.Pages)
                    {
                        if (page == null)
                        {
                            continue;
                        }
                        Debug.WriteLine(String.Format("  doc={0}, page={1}", docIndex, pageIndex));

                        PdfPage pdfPage = /*renderer.CreatePage(pdfComparisonDocument, page);*/ pdfComparisonDocument.AddPage();
                        double  width   = page.Width;
                        double  height  = page.Height;
                        pdfPage.Width  = page.Width * 2;
                        pdfPage.Height = page.Height;


                        DocumentPage docPage = docSeq.DocumentPaginator.GetPage(pageIndex);
                        //byte[] png = PngFromPage(docPage, 96);

                        BitmapSource bmsource = BitmapSourceFromPage(docPage, 96 * 2);
                        XImage       image    = XImage.FromBitmapSource(bmsource);

                        XGraphics gfx = XGraphics.FromPdfPage(pdfPage);
                        form.PageIndex = pageIndex;
                        gfx.DrawImage(form, 0, 0, width, height);
                        gfx.DrawImage(image, width, 0, width, height);

                        //renderer.RenderPage(pdfPage, page);
                        pageIndex++;

#if DEBUG
                        // stop at page...
                        if (pageIndex == 50)
                        {
                            break;
                        }
#endif
                    }

                    string pdfComparisonFilename = pdfFilename;
                    if (IOPath.HasExtension(pdfComparisonFilename))
                    {
                        pdfComparisonFilename = pdfComparisonFilename.Substring(0, pdfComparisonFilename.LastIndexOf('.'));
                    }
                    pdfComparisonFilename += "-comparison.pdf";

                    pdfComparisonDocument.ViewerPreferences.FitWindow = true;
                    //pdfComparisonDocument.PageMode = PdfPageMode.
                    pdfComparisonDocument.PageLayout = PdfPageLayout.SinglePage;
                    pdfComparisonDocument.Save(pdfComparisonFilename);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                if (xpsDocument != null)
                {
                    xpsDocument.Close();
                }
                throw;
            }
            finally
            {
                if (xpsDocument != null)
                {
                    xpsDocument.Close();
                }
            }
        }
        //[TestMethod]
        public void TestRenderingAllSamples()
        {
            string dir   = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); // Directory.GetCurrentDirectory();
            int    slash = dir.LastIndexOf("\\");

            while ((slash = dir.LastIndexOf("\\")) != -1)
            {
                if (dir.EndsWith("PdfSharp"))
                {
                    break;
                }
                dir = dir.Substring(0, slash);
            }
            dir += "/testing/SampleXpsDocuments_1_0";
#if true
            string[] files = Directory.GetFiles(dir, "*.xps", SearchOption.AllDirectories);
#else
            string[] files = Directory.GetFiles("../../../XPS-TestDocuments", "*.xps", SearchOption.AllDirectories);
#endif
            //files = Directory.GetFiles(@"G:\!StLa\PDFsharp-1.20\SourceCode\PdfSharp\testing\SampleXpsDocuments_1_0\MXDW", "*.xps", SearchOption.AllDirectories);
            //files = Directory.GetFiles(@"G:\!StLa\PDFsharp-1.20\SourceCode\PdfSharp\testing\SampleXpsDocuments_1_0\Handcrafted", "*.xps", SearchOption.AllDirectories);
            //files = Directory.GetFiles(@"G:\!StLa\PDFsharp-1.20\SourceCode\PdfSharp\testing\SampleXpsDocuments_1_0\Showcase", "*.xps", SearchOption.AllDirectories);
            files = Directory.GetFiles(@"G:\!StLa\PDFsharp-1.20\SourceCode\PdfSharp\testing\SampleXpsDocuments_1_0\QualityLogicMinBar", "*.xps", SearchOption.AllDirectories);


            if (files.Length == 0)
            {
                throw new Exception("No sample file found. Copy sample files to the \"SampleXpsDocuments_1_0\" folder!");
            }

            foreach (string filename in files)
            {
                // No negative tests here
                if (filename.Contains("\\ConformanceViolations\\"))
                {
                    continue;
                }

                //if (filename.Contains("\\Showcase\\"))
                //  continue;

                //if (!filename.Contains("Vista"))
                //  continue;

                Debug.WriteLine(filename);
                try
                {
                    int         docIndex = 0;
                    XpsDocument xpsDoc   = XpsDocument.Open(filename);
                    foreach (FixedDocument doc in xpsDoc.Documents)
                    {
                        try
                        {
                            PdfDocument pdfDoc   = new PdfDocument();
                            PdfRenderer renderer = new PdfRenderer();

                            int pageIndex = 0;
                            foreach (FixedPage page in doc.Pages)
                            {
                                if (page == null)
                                {
                                    continue;
                                }
                                Debug.WriteLine(String.Format("  doc={0}, page={1}", docIndex, pageIndex));
                                PdfPage pdfPage = renderer.CreatePage(pdfDoc, page);
                                renderer.RenderPage(pdfPage, page);
                                pageIndex++;

                                // stop at page...
                                if (pageIndex == 50)
                                {
                                    break;
                                }
                            }

                            string pdfFilename = IOPath.GetFileNameWithoutExtension(filename);
                            if (docIndex != 0)
                            {
                                pdfFilename += docIndex.ToString();
                            }
                            pdfFilename += ".pdf";
                            pdfFilename  = IOPath.Combine(IOPath.GetDirectoryName(filename), pdfFilename);

                            pdfDoc.Save(pdfFilename);
                        }
                        catch (Exception ex)
                        {
                            Debug.WriteLine("Exception: " + ex.Message);
                        }
                        docIndex++;
                    }
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                    GetType();
                }
            }
        }