So, I went out and specifically bought Telerik UI for WPF because we needed a good PDF Viewer.
My structure is rather simple
WPF:
<Window xmlns:local="clr-namespace:Catalogo" xmlns:controls="clr-namespace:Controls;assembly=Controls" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" x:Class="Catalogo.Catalogos" mc:Ignorable="d" Title="Catalogo" WindowStartupLocation="CenterScreen" SnapsToDevicePixels="False" VisualEdgeMode="Aliased" ResizeMode="NoResize" Height="{DynamicResource {x:Static SystemParameters.MaximizedPrimaryScreenHeightKey}}" Width="{DynamicResource {x:Static SystemParameters.MaximizedPrimaryScreenWidthKey}}" WindowStyle="None" Loaded="Window_Loaded" Background="{DynamicResource primary_dark}"> <Window.Resources> <ResourceDictionary Source="/Styles;component/Merged.xaml"/> </Window.Resources> <Grid> <telerik:RadBook RightPageIndex="1" BorderBrush="Transparent" > <telerik:RadBookItem Width="960" Height="1060" > <Grid> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition/> </Grid.RowDefinitions> <telerik:RadPdfViewerToolBar RadPdfViewer="{Binding ElementName=pdfViewerIzq, Mode=OneTime}"/> <telerik:RadPdfViewer x:Name="pdfViewerIzq" DataContext="{Binding CommandDescriptors, ElementName=pdfViewerIzq}" Grid.Row="1"/> </Grid> </Grid> </telerik:RadBookItem> <telerik:RadBookItem Width="960" Height="1060"> <Grid> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition/> </Grid.RowDefinitions> <telerik:RadPdfViewerToolBar Name="barraDer" RadPdfViewer="{Binding ElementName=pdfViewerDer, Mode=OneTime}"/> <telerik:RadPdfViewer x:Name="pdfViewerDer" DataContext="{Binding CommandDescriptors, ElementName=pdfViewerDer}" Grid.Row="1"/> </Grid> </Grid> </telerik:RadBookItem> </telerik:RadBook> </Grid></Window>
Then I have two methods for setting the source for the left and right viewers:
public void setPageIzq(string ruta) { pdfViewerIzq.DocumentSource = new PdfDocumentSource(new System.Uri(ruta)); pdfViewerIzq.FitToPage(); pdfViewerIzq.Mode = Telerik.Windows.Documents.Fixed.UI.FixedDocumentViewerMode.TextSelection; pdfViewerIzq.CommandDescriptors.FitToPageFixedDocumentSinglePageViewPresenterCommandDescriptor.IsEnabled = true; pdfViewerIzq.CommandDescriptors.FitToPageFixedDocumentSinglePageViewPresenterCommandDescriptor.Command.Execute(null); pdfViewerIzq.ScaleMode = Telerik.Windows.Documents.Fixed.UI.ScaleMode.FitToPage; } public void setPageDer(string ruta) { pdfViewerDer.DocumentSource = new PdfDocumentSource(new System.Uri(ruta)); pdfViewerIzq.CommandDescriptors.FitToPageCommandDescriptor.IsEnabled = true; pdfViewerIzq.CommandDescriptors.FitToPageCommandDescriptor.Command.Execute(null); }
As you can see, I tried a bunch of different ways to set the viewer to fit to page. If I use the navbar up top, I can make it fit to page, but none of the methods I tried worked for my manual setting.
I had to take this approach because we need to display the document two pages at a time, any good ideas?