Hi,
The rotation property of the page object causes me problems.
I want to rotate a specific page in the RadFixedDocument, so i index the right page and rotate it 90 degree and after that i call OnPropertyChanged to update the PdfDocument property.
But when the page was rotated(in the debug mode the value has been changed) the radpdfviewer doesn't display the rotation.
Where could the error be located?
Many thanks in advance for youre suggestions.
MainWindow.xaml.cs:
01.
using
System;
02.
using
System.IO;
03.
using
System.Linq;
04.
using
System.Windows;
05.
using
System.Windows.Input;
06.
using
Telerik.Windows.Documents.Fixed;
07.
using
Telerik.Windows.Documents.Fixed.FormatProviders;
08.
using
Telerik.Windows.Documents.Fixed.FormatProviders.Pdf;
09.
using
Telerik.Windows.Documents.Fixed.Model;
10.
using
Telerik.Windows.Documents.UI;
11.
using
Rotation = Telerik.Windows.Documents.Fixed.Model.Data.Rotation;
12.
13.
namespace
TelerikWpfApp1
14.
{
15.
/// <summary>
16.
/// Interaction logic for MainWindow.xaml
17.
/// </summary>
18.
public
partial
class
MainWindow : Window
19.
{
20.
private
PdfViewModel _pdfViewModel;
21.
public
MainWindow()
22.
{
23.
InitializeComponent();
24.
_pdfViewModel =
new
PdfViewModel();
25.
DataContext = _pdfViewModel;
26.
}
27.
28.
private
void
RotateSpecificPage(
object
sender, RoutedEventArgs e)
29.
{
30.
_pdfViewModel.RotateSpecificPage();
31.
}
32.
33.
private
void
DeleteSpecificPage(
object
sender, RoutedEventArgs e)
34.
{
35.
_pdfViewModel.DeleteSpecificPage();
36.
}
37.
}
38.
}
MainWindow.xaml:
01.
<
Window
03.
xmlns:x
=
"http://schemas.microsoft.com/winfx/2006/xaml"
04.
xmlns:d
=
"http://schemas.microsoft.com/expression/blend/2008"
05.
xmlns:mc
=
"http://schemas.openxmlformats.org/markup-compatibility/2006"
06.
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
07.
xmlns:converters
=
"clr-namespace:Telerik.Windows.Documents.Converters;assembly=Telerik.Windows.Controls.FixedDocumentViewers"
08.
xmlns:telerikWpfApp1
=
"clr-namespace:TelerikWpfApp1"
09.
mc:Ignorable
=
"d"
10.
x:Class
=
"TelerikWpfApp1.MainWindow"
11.
Title
=
"MainWindow"
Height
=
"Auto"
Width
=
"Auto"
>
12.
<
Grid
>
13.
<
Grid
>
14.
<
Grid.RowDefinitions
>
15.
<
RowDefinition
Height
=
"Auto"
/>
16.
<
RowDefinition
Height
=
"Auto"
/>
17.
<
RowDefinition
Height
=
"*"
/>
18.
</
Grid.RowDefinitions
>
19.
<
Button
Grid.Row
=
"0"
Click
=
"RotateSpecificPage"
>RotatePage</
Button
>
20.
<
Button
Grid.Row
=
"1"
Click
=
"DeleteSpecificPage"
>DeletePage</
Button
>
21.
<
telerik:RadPdfViewer
Grid.Row
=
"2"
x:Name
=
"PdfViewer"
Document
=
"{Binding Path=PdfDocument, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
/>
22.
</
Grid
>
23.
</
Grid
>
24.
</
Window
>
PdfViewModel.cs:
01.
using
System;
02.
using
System.Collections.Generic;
03.
using
System.ComponentModel;
04.
using
System.IO;
05.
using
System.Linq;
06.
using
System.Runtime.CompilerServices;
07.
using
System.Text;
08.
using
System.Threading.Tasks;
09.
using
System.Windows;
10.
using
System.Windows.Input;
11.
using
Telerik.Windows.Documents.Fixed.FormatProviders;
12.
using
Telerik.Windows.Documents.Fixed.FormatProviders.Pdf;
13.
using
Telerik.Windows.Documents.Fixed.Model;
14.
using
Telerik.Windows.Documents.Fixed.Model.Data;
15.
using
TelerikWpfApp1.Annotations;
16.
17.
namespace
TelerikWpfApp1
18.
{
19.
public
class
PdfViewModel : INotifyPropertyChanged
20.
{
21.
private
string
_path = @
"test.pdf"
;
22.
private
RadFixedDocument _pdfDocument;
23.
private
const
int
PageNumber = 0;
24.
25.
public
PdfViewModel()
26.
{
27.
PdfDocument = ReadPdf(_pathOne);
28.
}
29.
public
RadFixedDocument PdfDocument
30.
{
31.
get
=> _pdfDocument;
32.
set
33.
{
34.
if
(!Equals(value,
null
))
35.
{
36.
_pdfDocument = value;
37.
OnPropertyChanged();
38.
}
39.
}
40.
}
41.
42.
private
RadFixedDocument ReadPdf(
string
path)
43.
{
44.
using
(var stream = File.OpenRead(path))
45.
{
46.
return
new
PdfFormatProvider(stream, FormatProviderSettings.ReadAllAtOnce).Import();
47.
}
48.
}
49.
50.
public
void
RotateSpecificPage()
51.
{
52.
Console.WriteLine(@
"Page has been rotated"
);
53.
if
(!Equals(PdfDocument,
null
))
54.
{
55.
PdfDocument.Pages[PageNumber].Rotation = Rotation.Rotate90;
56.
OnPropertyChanged(nameof(PdfDocument));
57.
}
58.
}
59.
60.
public
void
DeleteSpecificPage()
61.
{
62.
Console.WriteLine(@
"Page has been deleted"
);
63.
if
(!Equals(PdfDocument,
null
) && PdfDocument.Pages.Count > 1)
64.
{
65.
PdfDocument.Pages.RemoveAt(PageNumber);
66.
OnPropertyChanged(nameof(PdfDocument));
67.
}
68.
}
69.
70.
public
event
PropertyChangedEventHandler PropertyChanged;
71.
72.
[NotifyPropertyChangedInvocator]
73.
protected
virtual
void
OnPropertyChanged([CallerMemberName]
string
propertyName =
null
)
74.
{
75.
PropertyChanged?.Invoke(
this
,
new
PropertyChangedEventArgs(propertyName));
76.
}
77.
}
78.
}