예제 #1
0
        /// <summary>
        /// This renders PDF page with render options
        /// Rendering a pdf page requires following 3 steps
        ///     1. PdfDocument.LoadFromFileAsync(pdfFile) which returns pdfDocument
        ///     2. pdfDocument.GetPage(pageIndex)
        ///     3. pdfPage.RenderToStreamAsync(stream) or pdfPage.RenderToStreamAsync(stream,pdfPageRenderOptions)
        /// </summary>

        private async Task RenderPDFPage(string pdfFileName, RENDEROPTIONS renderOptions)
        {
            try
            {
                StorageFile pdfFile = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(pdfFileName);

                //Load Pdf File

                _pdfDocument = await PdfDocument.LoadFromFileAsync(pdfFile);;

                if (_pdfDocument != null && _pdfDocument.PageCount > 0)
                {
                    //Get Pdf page
                    var pdfPage = _pdfDocument.GetPage(PDF_PAGE_INDEX);

                    if (pdfPage != null)
                    {
                        // next, generate a bitmap of the page
                        StorageFolder tempFolder = ApplicationData.Current.TemporaryFolder;

                        StorageFile jpgFile = await tempFolder.CreateFileAsync(Guid.NewGuid().ToString() + ".png", CreationCollisionOption.ReplaceExisting);

                        if (jpgFile != null)
                        {
                            IRandomAccessStream randomStream = await jpgFile.OpenAsync(FileAccessMode.ReadWrite);

                            PdfPageRenderOptions pdfPageRenderOptions = new PdfPageRenderOptions();
                            switch (renderOptions)
                            {
                            case RENDEROPTIONS.NORMAL:
                                //Render Pdf page with default options
                                await pdfPage.RenderToStreamAsync(randomStream);

                                break;

                            case RENDEROPTIONS.ZOOM:
                                //set PDFPageRenderOptions.DestinationWidth or DestinationHeight with expected zoom value
                                Size pdfPageSize = pdfPage.Size;
                                pdfPageRenderOptions.DestinationHeight = (uint)pdfPageSize.Height * ZOOM_FACTOR;
                                //Render pdf page at a zoom level by passing pdfpageRenderOptions with DestinationLength set to the zoomed in length
                                await pdfPage.RenderToStreamAsync(randomStream, pdfPageRenderOptions);

                                break;

                            case RENDEROPTIONS.PORTION:
                                //Set PDFPageRenderOptions.SourceRect to render portion of a page
                                pdfPageRenderOptions.SourceRect = PDF_PORTION_RECT;
                                //Render portion of a page
                                await pdfPage.RenderToStreamAsync(randomStream, pdfPageRenderOptions);

                                break;
                            }
                            await randomStream.FlushAsync();

                            randomStream.Dispose();
                            pdfPage.Dispose();

                            await DisplayImageFileAsync(jpgFile);
                        }
                    }
                }
            }
            catch (Exception err)
            {
                rootPage.NotifyUser("Error: " + err.Message, NotifyType.ErrorMessage);
            }
        }
예제 #2
0
        /// <summary>
        /// Maakt voor elk aangemaakt pdf bestand een nieuwe map met hierin alle pagina's apart per afbeelding.
        /// </summary>
        /// <param name="renderOption"></param>
        /// <param name="bestanden">Een lijst met StorageFolders instanties</param>
        /// <returns>Eventueel de lijst van StorageFiles indien nodig</returns>
        public async Task <List <StorageFile> > GetAfbeeldingenVanPDF(RENDEROPTIONS renderOption, List <StorageFile> bestanden)
        {
            List <StorageFile> paginas = new List <StorageFile>(); //Bekomen lijst van PDF pagina als afbeelding

            foreach (StorageFile bestand in bestanden)
            {
                string bestandsNaam = bestand.Name.Replace(".pdf", ""); //PDF extensie uit de naam wissen voor de folder
                try
                {
                    await doelfolder.CreateFolderAsync(bestandsNaam, CreationCollisionOption.ReplaceExisting); //Maak de doelfolder aan en vervang indien nodig

                    //PDF bestand laden
                    PdfDocument _pdfDocument = await PdfDocument.LoadFromFileAsync(bestand);;

                    if (_pdfDocument != null && _pdfDocument.PageCount > 0)
                    {
                        // next, generate a bitmap of the page
                        StorageFolder tempFolder = ApplicationData.Current.TemporaryFolder;
                        for (uint pagina = 0; pagina < _pdfDocument.PageCount; pagina++)
                        {
                            var pdfPage = _pdfDocument.GetPage(pagina);

                            if (pdfPage != null)
                            {
                                StorageFile jpgFile = await doelfolder.
                                                      CreateFileAsync(String.Format("\\{0}\\{1}_pagina{2}.png", bestandsNaam, bestandsNaam, pagina), CreationCollisionOption.ReplaceExisting);

                                if (jpgFile != null)
                                {
                                    IRandomAccessStream randomStream = await jpgFile.OpenAsync(FileAccessMode.ReadWrite);

                                    PdfPageRenderOptions pdfPageRenderOptions = new PdfPageRenderOptions();
                                    switch (renderOption)
                                    {
                                    case RENDEROPTIONS.NORMAL:
                                        //PDF pagina inladen
                                        await pdfPage.RenderToStreamAsync(randomStream);

                                        break;

                                    case RENDEROPTIONS.ZOOM:
                                        //set PDFPageRenderOptions.DestinationWidth or DestinationHeight with expected zoom value
                                        Size pdfPageSize = pdfPage.Size;
                                        pdfPageRenderOptions.DestinationHeight = (uint)pdfPageSize.Height * ZOOM_FACTOR;
                                        //Render pdf page at a zoom level by passing pdfpageRenderOptions with DestinationLength set to the zoomed in length
                                        await pdfPage.RenderToStreamAsync(randomStream, pdfPageRenderOptions);

                                        break;
                                    }
                                    await randomStream.FlushAsync();

                                    randomStream.Dispose();
                                    pdfPage.Dispose();

                                    paginas.Add(jpgFile);
                                }
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    paLogging.log.Error(String.Format("Er is een fout opgetreden bij het converteren van pdf {0} naar afbeeldingen: {1}", bestandsNaam, e.Message));
                }
            }
            return(paginas); //Pagina's teruggeven (leeg indien exception, e.d.)
        }
예제 #3
0
        /// <summary>
        /// This renders PDF bitmap Image with render options
        /// Rendering a pdf page requires following 3 steps
        ///     1. PdfDocument.LoadFromFileAsync(pdfFile) which returns pdfDocument
        ///     2. pdfDocument.GetPage(pageIndex)
        ///     3. pdfPage.RenderToStreamAsync(stream) or pdfPage.RenderToStreamAsync(stream,pdfPageRenderOptions)
        /// </summary>
        public static async Task <Images> LoadPDFBitmapImage(StorageFile pdfFile, RENDEROPTIONS renderOptions)
        {
            Images image = new Images();

            List <ImageSource>     bitmapImageListForAllPages = new List <ImageSource>();
            List <WriteableBitmap> lstwriteable = new List <WriteableBitmap>();

            try
            {
                //Load Pdf File
                PdfDocument _pdfDocument = await PdfDocument.LoadFromFileAsync(pdfFile);;

                if (_pdfDocument != null && _pdfDocument.PageCount > 0)
                {
                    for (uint i = 0; i < _pdfDocument.PageCount; i++)
                    {
                        //Get Pdf page
                        var pdfPage = _pdfDocument.GetPage(i);



                        if (pdfPage != null)
                        {
                            // next, generate a bitmap of the page
                            StorageFolder tempFolder = ApplicationData.Current.TemporaryFolder;

                            StorageFile jpgFile = await tempFolder.CreateFileAsync(Guid.NewGuid().ToString() + ".png", CreationCollisionOption.ReplaceExisting);

                            if (jpgFile != null)
                            {
                                IRandomAccessStream randomStream = await jpgFile.OpenAsync(FileAccessMode.ReadWrite);

                                PdfPageRenderOptions pdfPageRenderOptions = new PdfPageRenderOptions();
                                switch (renderOptions)
                                {
                                case RENDEROPTIONS.NORMAL:
                                    //Render Pdf page with default options
                                    await pdfPage.RenderToStreamAsync(randomStream);

                                    break;

                                case RENDEROPTIONS.ZOOM:
                                    //set PDFPageRenderOptions.DestinationWidth or DestinationHeight with expected zoom value
                                    Size pdfPageSize = pdfPage.Size;
                                    pdfPageRenderOptions.DestinationHeight = (uint)pdfPageSize.Height * ZOOM_FACTOR;
                                    //Render pdf page at a zoom level by passing pdfpageRenderOptions with DestinationLength set to the zoomed in length
                                    await pdfPage.RenderToStreamAsync(randomStream, pdfPageRenderOptions);

                                    break;

                                case RENDEROPTIONS.PORTION:
                                    //Set PDFPageRenderOptions.SourceRect to render portion of a page
                                    pdfPageRenderOptions.SourceRect = PDF_PORTION_RECT;
                                    //Render portion of a page
                                    await pdfPage.RenderToStreamAsync(randomStream, pdfPageRenderOptions);

                                    break;
                                }

                                Size            size        = pdfPage.Size;
                                WriteableBitmap writebitmap = new WriteableBitmap((int)size.Width, (int)size.Height);
                                writebitmap.SetSource(randomStream);
                                lstwriteable.Add(writebitmap);


                                //return src;

                                await randomStream.FlushAsync();

                                randomStream.Dispose();
                                pdfPage.Dispose();

                                // Display the image in the UI.
                                BitmapImage src = new BitmapImage();
                                //src.SetSource(randomStream);
                                src.SetSource(await jpgFile.OpenAsync(FileAccessMode.Read));
                                //jpgFile = await jpgFile.GetScaledImageAsThumbnailAsync(ThumbnailMode.DocumentsView, ZOOM_FACTOR, ThumbnailOptions.ResizeThumbnail);
                                bitmapImageListForAllPages.Add(src);
                            }
                        }
                    }
                }
            }
            catch (Exception err)
            {
            }


            image.ListImageDisplay.Add(bitmapImageListForAllPages);
            image.ListWriteImages.Add(lstwriteable);
            return(image);
        }
        /// <summary>
        /// This renders PDF page with render options 
        /// Rendering a pdf page requires following 3 steps
        ///     1. PdfDocument.LoadFromFileAsync(pdfFile) which returns pdfDocument
        ///     2. pdfDocument.GetPage(pageIndex) 
        ///     3. pdfPage.RenderToStreamAsync(stream) or pdfPage.RenderToStreamAsync(stream,pdfPageRenderOptions)
        /// </summary>
             
        private async Task RenderPDFPage(string pdfFileName,RENDEROPTIONS renderOptions)
        {
            try
            {         
                 StorageFile pdfFile = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(pdfFileName);
                 //Load Pdf File
                 
                 _pdfDocument = await PdfDocument.LoadFromFileAsync(pdfFile); ;

                if (_pdfDocument != null && _pdfDocument.PageCount > 0)
                {
                    //Get Pdf page
                    var pdfPage = _pdfDocument.GetPage(PDF_PAGE_INDEX);                    

                    if (pdfPage != null)
                    {
                        // next, generate a bitmap of the page
                        StorageFolder tempFolder = ApplicationData.Current.TemporaryFolder;
                                         
                        StorageFile jpgFile = await tempFolder.CreateFileAsync(Guid.NewGuid().ToString() + ".png", CreationCollisionOption.ReplaceExisting);
                        
                        if (jpgFile != null)
                        {
                            IRandomAccessStream randomStream = await jpgFile.OpenAsync(FileAccessMode.ReadWrite);
                            
                            PdfPageRenderOptions pdfPageRenderOptions = new PdfPageRenderOptions();
                            switch (renderOptions)
                            {
                                case RENDEROPTIONS.NORMAL:
                                    //Render Pdf page with default options
                                    await pdfPage.RenderToStreamAsync(randomStream);                                    
                                    break;
                                case RENDEROPTIONS.ZOOM:
                                    //set PDFPageRenderOptions.DestinationWidth or DestinationHeight with expected zoom value
                                    Size pdfPageSize = pdfPage.Size;
                                    pdfPageRenderOptions.DestinationHeight = (uint)pdfPageSize.Height * ZOOM_FACTOR;
                                    //Render pdf page at a zoom level by passing pdfpageRenderOptions with DestinationLength set to the zoomed in length 
                                    await pdfPage.RenderToStreamAsync(randomStream, pdfPageRenderOptions);
                                    break;
                                case RENDEROPTIONS.PORTION:
                                    //Set PDFPageRenderOptions.SourceRect to render portion of a page
                                    pdfPageRenderOptions.SourceRect = PDF_PORTION_RECT;                                                                     
                                    //Render portion of a page
                                    await pdfPage.RenderToStreamAsync(randomStream, pdfPageRenderOptions);
                                    break;
                            }
                            await randomStream.FlushAsync();
                            
                            randomStream.Dispose();
                            pdfPage.Dispose();

                            await DisplayImageFileAsync(jpgFile);
                        }
                    }
                }
            }
            catch (Exception err)
            {
                rootPage.NotifyUser("Error: " + err.Message, NotifyType.ErrorMessage);

            }
        }
예제 #5
0
        /// <summary>
        /// Maakt voor elk aangemaakt pdf bestand een nieuwe map met hierin alle pagina's apart per afbeelding.
        /// </summary>
        /// <param name="renderOption"></param>
        /// <param name="bestanden">Een lijst met StorageFolders instanties</param>
        /// <returns>Eventueel de lijst van StorageFiles indien nodig</returns>
        public async Task<List<StorageFile>> GetAfbeeldingenVanPDF(RENDEROPTIONS renderOption, List<StorageFile> bestanden)
        {
            List<StorageFile> paginas = new List<StorageFile>(); //Bekomen lijst van PDF pagina als afbeelding
            foreach (StorageFile bestand in bestanden)
            {
                string bestandsNaam = bestand.Name.Replace(".pdf", ""); //PDF extensie uit de naam wissen voor de folder
                try
                {
                    await doelfolder.CreateFolderAsync(bestandsNaam, CreationCollisionOption.ReplaceExisting); //Maak de doelfolder aan en vervang indien nodig

                    //PDF bestand laden
                    PdfDocument _pdfDocument = await PdfDocument.LoadFromFileAsync(bestand); ;

                    if (_pdfDocument != null && _pdfDocument.PageCount > 0)
                    {
                        // next, generate a bitmap of the page
                        StorageFolder tempFolder = ApplicationData.Current.TemporaryFolder;
                        for (uint pagina = 0; pagina < _pdfDocument.PageCount; pagina++)
                        {
                            var pdfPage = _pdfDocument.GetPage(pagina);

                            if (pdfPage != null)
                            {
                                StorageFile jpgFile = await doelfolder.
                                    CreateFileAsync(String.Format("\\{0}\\{1}_pagina{2}.png", bestandsNaam, bestandsNaam, pagina), CreationCollisionOption.ReplaceExisting);

                                if (jpgFile != null)
                                {
                                    IRandomAccessStream randomStream = await jpgFile.OpenAsync(FileAccessMode.ReadWrite);

                                    PdfPageRenderOptions pdfPageRenderOptions = new PdfPageRenderOptions();
                                    switch (renderOption)
                                    {
                                        case RENDEROPTIONS.NORMAL:
                                            //PDF pagina inladen
                                            await pdfPage.RenderToStreamAsync(randomStream);
                                            break;
                                        case RENDEROPTIONS.ZOOM:
                                            //set PDFPageRenderOptions.DestinationWidth or DestinationHeight with expected zoom value
                                            Size pdfPageSize = pdfPage.Size;
                                            pdfPageRenderOptions.DestinationHeight = (uint)pdfPageSize.Height * ZOOM_FACTOR;
                                            //Render pdf page at a zoom level by passing pdfpageRenderOptions with DestinationLength set to the zoomed in length 
                                            await pdfPage.RenderToStreamAsync(randomStream, pdfPageRenderOptions);
                                            break;
                                    }
                                    await randomStream.FlushAsync();

                                    randomStream.Dispose();
                                    pdfPage.Dispose();

                                    paginas.Add(jpgFile);
                                }
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    paLogging.log.Error(String.Format("Er is een fout opgetreden bij het converteren van pdf {0} naar afbeeldingen: {1}", bestandsNaam, e.Message));
                }
            }
            return paginas; //Pagina's teruggeven (leeg indien exception, e.d.)
        }
        /// <summary>
        /// This renders PDF bitmap Image with render options 
        /// Rendering a pdf page requires following 3 steps
        ///     1. PdfDocument.LoadFromFileAsync(pdfFile) which returns pdfDocument
        ///     2. pdfDocument.GetPage(pageIndex) 
        ///     3. pdfPage.RenderToStreamAsync(stream) or pdfPage.RenderToStreamAsync(stream,pdfPageRenderOptions)
        /// </summary>
        public static async Task<Images> LoadPDFBitmapImage(StorageFile pdfFile, RENDEROPTIONS renderOptions)
        {
            Images image = new Images();
            
            List<ImageSource> bitmapImageListForAllPages = new List<ImageSource>();
            List<WriteableBitmap> lstwriteable = new List<WriteableBitmap>();
           
            try
            {
                //Load Pdf File
                PdfDocument _pdfDocument = await PdfDocument.LoadFromFileAsync(pdfFile); ;

                if (_pdfDocument != null && _pdfDocument.PageCount > 0)
                {
                    for (uint i = 0; i < _pdfDocument.PageCount; i++)
                    { 
                        //Get Pdf page
                        var pdfPage = _pdfDocument.GetPage(i);

                       

                        if (pdfPage != null)
                        {
                            // next, generate a bitmap of the page
                            StorageFolder tempFolder = ApplicationData.Current.TemporaryFolder;

                            StorageFile jpgFile = await tempFolder.CreateFileAsync(Guid.NewGuid().ToString() + ".png", CreationCollisionOption.ReplaceExisting);

                            if (jpgFile != null)
                            {
                                IRandomAccessStream randomStream = await jpgFile.OpenAsync(FileAccessMode.ReadWrite);

                                PdfPageRenderOptions pdfPageRenderOptions = new PdfPageRenderOptions();
                                switch (renderOptions)
                                {
                                    case RENDEROPTIONS.NORMAL:
                                        //Render Pdf page with default options
                                        await pdfPage.RenderToStreamAsync(randomStream);
                                        break;
                                    case RENDEROPTIONS.ZOOM:
                                        //set PDFPageRenderOptions.DestinationWidth or DestinationHeight with expected zoom value
                                        Size pdfPageSize = pdfPage.Size;
                                        pdfPageRenderOptions.DestinationHeight = (uint)pdfPageSize.Height * ZOOM_FACTOR;
                                        //Render pdf page at a zoom level by passing pdfpageRenderOptions with DestinationLength set to the zoomed in length 
                                        await pdfPage.RenderToStreamAsync(randomStream, pdfPageRenderOptions);
                                        break;
                                    case RENDEROPTIONS.PORTION:
                                        //Set PDFPageRenderOptions.SourceRect to render portion of a page
                                        pdfPageRenderOptions.SourceRect = PDF_PORTION_RECT;
                                        //Render portion of a page
                                        await pdfPage.RenderToStreamAsync(randomStream, pdfPageRenderOptions);
                                        break;
                                }

                                Size size = pdfPage.Size;
                                WriteableBitmap writebitmap = new WriteableBitmap((int)size.Width, (int)size.Height);
                                writebitmap.SetSource(randomStream);
                                lstwriteable.Add(writebitmap);

                             
                                //return src;

                                await randomStream.FlushAsync();

                                randomStream.Dispose();
                                pdfPage.Dispose();

                                // Display the image in the UI.
                                BitmapImage src = new BitmapImage();
                                //src.SetSource(randomStream);
                                src.SetSource(await jpgFile.OpenAsync(FileAccessMode.Read));
                                //jpgFile = await jpgFile.GetScaledImageAsThumbnailAsync(ThumbnailMode.DocumentsView, ZOOM_FACTOR, ThumbnailOptions.ResizeThumbnail);
                                bitmapImageListForAllPages.Add(src);

                               

                                
                            }
                        }
                    
                    }
                }
            }
            catch (Exception err)
            {

            }


            image.ListImageDisplay.Add(bitmapImageListForAllPages);
            image.ListWriteImages.Add(lstwriteable);
            return image;
        }