RadPdfViewer Fit to page not working.

2 posts, 1 answers
  1. ANDREI MANU
    ANDREI MANU avatar
    1 posts
    Member since:
    Sep 2018

    Posted 04 Sep 2018 Link to this post

    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?

  2. Answer
    Anna
    Admin
    Anna avatar
    136 posts

    Posted 07 Sep 2018 Link to this post

    Hello Andrei,

    Thank you for considering our controls, more specifically RadPdfViewer.

    What happens in this situation is that when the document is loaded, the ScaleMode of the viewer is reset. So we'll need something along these lines:

    public void setPageIzq(string ruta)
    {
        pdfViewerIzq.DocumentSource = new PdfDocumentSource(new System.Uri(ruta));
        pdfViewerIzq.DocumentChanged += PdfViewerIzq_DocumentChanged;
    }
     
    private void PdfViewerIzq_DocumentChanged(object sender, DocumentChangedEventArgs e)
    {
        pdfViewerIzq.FitToPage();
    }

    Please, don't hesitate to let us know if you have any questions.

    Regards,
    Anna
    Progress Telerik
    Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
Back to Top