/// <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); } }
/// <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); }
/// <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); } }
/// <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; }