Beispiel #1
0
        /// <summary>
        /// The methods provided in this section are simply used to allow
        /// NavigationHelper to respond to the page's navigation methods.
        /// <para>
        /// Page specific logic should be placed in event handlers for the
        /// <see cref="NavigationHelper.LoadState"/>
        /// and <see cref="NavigationHelper.SaveState"/>.
        /// The navigation parameter is available in the LoadState method
        /// in addition to page state preserved during an earlier session.
        /// </para>
        /// </summary>
        /// <param name="e">Provides data for navigation methods and event
        /// handlers that cannot cancel the navigation request.</param>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            this.navigationHelper.OnNavigatedTo(e);

            int pageNumber            = (int)e.Parameter;
            PdfFixedDocument document = (Application.Current as App).Document;

            var t = Task <PdfBgraByteRenderingSurface> .Factory.StartNew(() =>
            {
                PdfPageRenderer renderer       = new PdfPageRenderer(document.Pages[pageNumber]);
                PdfBgraByteRenderingSurface rs = renderer.CreateRenderingSurface <PdfBgraByteRenderingSurface>(96, 96);
                PdfRendererSettings settings   = new PdfRendererSettings(96, 96, rs);
                renderer.ConvertPageToImage(settings);

                return(rs);
            })
                    .ContinueWith(value =>
            {
                PdfBgraByteRenderingSurface rs = value.Result;
                WriteableBitmap pageBitmap     = new WriteableBitmap(rs.Width, rs.Height);
                Stream imageStream             = pageBitmap.PixelBuffer.AsStream();
                imageStream.Write(rs.Bitmap, 0, rs.Bitmap.Length);
                pageImage.Width  = pageBitmap.PixelWidth;
                pageImage.Height = pageBitmap.PixelHeight;
                pageImage.Source = pageBitmap;
            }, TaskScheduler.FromCurrentSynchronizationContext());
        }
Beispiel #2
0
        /// <summary>
        /// Invoked when this page is about to be displayed in a Frame.
        /// </summary>
        /// <param name="e">Event data that describes how this page was reached.
        /// This parameter is typically used to configure the page.</param>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            Assembly assembly = typeof(MainPage).GetTypeInfo().Assembly;

            Stream pdfStream =
                assembly.GetManifestResourceStream("Xfinium.Pdf.Samples.Pro.WP81.PageThumbnails.xfinium.pdf");
            PdfFixedDocument document = new PdfFixedDocument(pdfStream);

            pdfStream.Dispose();

            int i = 0;

            pageThumbnailImages = new Image[document.Pages.Count];

            for (i = 0; i < document.Pages.Count; i++)
            {
                Border border = new Border();
                border.BorderThickness = new Thickness(1);
                border.BorderBrush     = new SolidColorBrush(Colors.Black);
                border.Margin          = new Thickness(10, 10, 0, 0);

                Image pageImage = new Image();
                border.Child           = pageImage;
                pageThumbnailImages[i] = pageImage;

                pageThumbnails.Children.Add(border);
            }

            for (i = 0; i < document.Pages.Count; i++)
            {
                int index = i;

                var t = Task <PdfBgraByteRenderingSurface> .Factory.StartNew(() =>
                {
                    PdfPageRenderer renderer       = new PdfPageRenderer(document.Pages[index]);
                    PdfBgraByteRenderingSurface rs = renderer.CreateRenderingSurface <PdfBgraByteRenderingSurface>(thumbnailDpi, thumbnailDpi);
                    PdfRendererSettings settings   = new PdfRendererSettings(thumbnailDpi, thumbnailDpi, rs);
                    renderer.ConvertPageToImage(settings);

                    return(rs);
                })
                        .ContinueWith(value =>
                {
                    PdfBgraByteRenderingSurface rs = value.Result;
                    WriteableBitmap pageBitmap     = new WriteableBitmap(rs.Width, rs.Height);
                    Stream imageStream             = pageBitmap.PixelBuffer.AsStream();
                    imageStream.Write(rs.Bitmap, 0, rs.Bitmap.Length);

                    pageThumbnailImages[index].Width  = pageBitmap.PixelWidth;
                    pageThumbnailImages[index].Height = pageBitmap.PixelHeight;
                    pageThumbnailImages[index].Source = pageBitmap;
                }, TaskScheduler.FromCurrentSynchronizationContext());
            }
        }
Beispiel #3
0
        private void btnConvert_Click(object sender, RoutedEventArgs e)
        {
            if (cbxPageNumber.SelectedIndex != -1)
            {
                PdfPageRenderer             renderer = new PdfPageRenderer(document.Pages[cbxPageNumber.SelectedIndex]);
                PdfBgraByteRenderingSurface rs       = renderer.CreateRenderingSurface <PdfBgraByteRenderingSurface>(96, 96);
                PdfRendererSettings         settings = new PdfRendererSettings(96, 96, rs);
                renderer.ConvertPageToImage(settings);

                WriteableBitmap pageBitmap  = new WriteableBitmap(rs.Width, rs.Height);
                Stream          imageStream = pageBitmap.PixelBuffer.AsStream();
                imageStream.Write(rs.Bitmap, 0, rs.Bitmap.Length);

                //pageImage.Width = pageBitmap.PixelWidth;
                //pageImage.Height = pageBitmap.PixelHeight;
                pageImage.Source = pageBitmap;
            }
        }