Some months ago, I blogged about how to display PDF files in your UWP app: Displaying PDF files in a UWP app
When I look at the stats of my blog, I notice that that particular blogpost gets a lot of visitors. Also, I regularly get mails from people having questions about displaying PDF files in a UWP app.
So, I figured out that this is something a lot of developers seem to need or want to use. And that’s why I thought I’d make a custom control for this exact purpose.
You can find the control, together with the source code, on my GitHub: SimplePdfViewer
Usage:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="250" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <StackPanel> <Button Content="Local PDF" Tapped="{x:Bind OpenLocal}" /> <Button Content="Remote PDF" Tapped="{x:Bind OpenRemote}" /> </StackPanel> <controls:SimplePdfViewerControl Grid.Column="1" Source="{x:Bind Source, Mode=OneWay}" AutoLoad="True" IsZoomEnabled="true" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" /> </Grid>
Result:
If you have any suggestions for this control, please let me know! I’ll try to gradually keep on improving this control.
December 6, 2017 at 3:45 pm
Thanks on this post very interesting, I am creating a hosted universal windows apps based on my WordPress document library. I have couple pages with PDF file and when I click on it app crashed, can you please give me some idea. Thanks again
February 16, 2019 at 11:43 am
great article, thank you for sharing
November 4, 2019 at 10:03 am
Hi, Your post is very useful. Thanks for this. i am totally new in windows UWP app development. I tried to do write bridge this in react-native for windows uwp.
<ItemsControl.ItemTemplate>
</ItemsControl.ItemTemplate>
How can i achieve this is programatically?..
you just add it in pdfpages and its biniding in xaml file. i need to do this in programatically. Could you please help me?..
December 3, 2019 at 9:28 am
Sorry for my late reply…
If you don’t want to use databinding, you can just loop over your collection of PDF pages (which are BitmapImages), foreach page create a new Image and add this image to your view. In pseudo code it would look something like this:
foreach(BitmapImage img in pdfPages)
{
var image = new Image();
image.Source = img;
myUIElement.Add(image);
}
If it’s not clear, please feel free to reach out on GitHub where you can drop some code so I can help you out.