A memory leak in RadPdfViewer when the control gets removed from the visual tree.
To work this around, use the reflection API to access the leaking VisualTarget objects and call their Dispose method manually.
var pdfViewer = hostBorder.Child as RadPdfViewer;
if (pdfViewer != null)
{
var canvas = viewer.ChildrenOfType<Canvas>().FirstOrDefault(x => x.GetType().Name.Contains("ContentElementsCanvas"));
var visualTargetsDictionaryField = canvas.GetType().GetField("pageNumberToVisualTarget", BindingFlags.NonPublic | BindingFlags.Instance);
var visualTargetsDictionary = (Dictionary<int, List<VisualTarget>>)visualTargetsDictionaryField.GetValue(canvas);
foreach (KeyValuePair<int, List<VisualTarget>> target in visualTargetsDictionary)
{
for (int i = 0; i < target.Value.Count; i++)
{
VisualTarget item = target.Value[i];
item.RootVisual = null;
item.Dispose();
}
}
}
hostBorder.Child = null;
hostBorder.Child = new RadPdfViewer() { Document = newDocument };
Hi Telerik-Team,
the 2024.4.X release of UI for WPF seems to no longer render pdf files correctly. It looks like as if the PdfViewer just renders the document as a single huge page.
An application that uses those references:
<PackageReference Include="Telerik.Windows.Controls.for.Wpf.Xaml" Version="2024.3.924" />
<PackageReference Include="Telerik.Windows.Controls.FixedDocumentViewers.for.Wpf.Xaml" Version="2024.3.924" />
<PackageReference Include="Telerik.Windows.Documents.Core" Version="2024.3.806" />
<PackageReference Include="Telerik.Windows.Documents.Fixed" Version="2024.3.806" />
<PackageReference Include="Telerik.Windows.Zip" Version="2024.3.806" />
works as expected. Once you change those to:
<PackageReference Include="Telerik.Windows.Controls.for.Wpf.Xaml" Version="2024.4.1111" />
<PackageReference Include="Telerik.Windows.Controls.FixedDocumentViewers.for.Wpf.Xaml" Version="2024.4.1111" />
<PackageReference Include="Telerik.Windows.Documents.Core" Version="2024.4.106" />
<PackageReference Include="Telerik.Windows.Documents.Fixed" Version="2024.4.106" />
<PackageReference Include="Telerik.Windows.Zip" Version="2024.4.106" />
the renderer stops working.
I have attached a VS solution with a pdf file that reproduces this
The attached image shows the issue.