コード例 #1
0
        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            string pageNumber = "";

            if (NavigationContext.QueryString.TryGetValue("pagenumber", out pageNumber))
            {
                PdfFixedDocument document = (Application.Current as App).Document;

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

                    return(rs);
                })
                        .ContinueWith(value =>
                {
                    PdfArgbIntRenderingSurface rs = value.Result;
                    WriteableBitmap wb            = new WriteableBitmap(rs.Width, rs.Height);
                    Array.Copy(rs.Bitmap, wb.Pixels, rs.Bitmap.Length);
                    pageImage.Width  = wb.PixelWidth;
                    pageImage.Height = wb.PixelHeight;
                    pageImage.Source = wb;
                }, TaskScheduler.FromCurrentSynchronizationContext());
            }
        }
コード例 #2
0
        private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
        {
            StreamResourceInfo xfiniumPdf = Application.GetResourceStream(new Uri("xfinium.pdf", UriKind.Relative));
            PdfFixedDocument   document   = new PdfFixedDocument(xfiniumPdf.Stream);

            xfiniumPdf.Stream.Close();
            (Application.Current as App).Document = document;

            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();
                pageImage.Tag          = i;
                pageImage.Tap         += pageImage_Tap;
                border.Child           = pageImage;
                pageThumbnailImages[i] = pageImage;

                pageThumbnails.Children.Add(border);
            }

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

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

                    return(rs);
                })
                        .ContinueWith(value =>
                {
                    PdfArgbIntRenderingSurface rs = value.Result;
                    WriteableBitmap wb            = new WriteableBitmap(rs.Width, rs.Height);
                    Array.Copy(rs.Bitmap, wb.Pixels, rs.Bitmap.Length);
                    pageThumbnailImages[index].Width  = wb.PixelWidth;
                    pageThumbnailImages[index].Height = wb.PixelHeight;
                    pageThumbnailImages[index].Source = wb;
                }, TaskScheduler.FromCurrentSynchronizationContext());
            }
        }