[英]Render pdf using wpf
我需要編寫自己的pdf查看器(UserControl)。 我為此使用pdfium.dll。 它的包裝是PdfiumService。 該服務可以將頁面呈現到BitmapSource。 PdfViewer在ScrollViewer的VirtualizingStackPanel中顯示頁面。 有什么想法我該怎么做pdf的惰性渲染? 問題是,如果pdf約為20mb(1000頁),則呈現的頁面大約需要2gb RAM。
VirtualizingStackPanel可以幫助我嗎? 我沒有找到任何有關“ BeginVirtualizing”或其他事件的事件。 有什么簡單的方法可以知道現在正在顯示什么項目?
也許是這樣的:
有任何現成的解決方案,一些技巧或想法嗎?
好吧,我從書本上得到了一些圖像。...問題的根源實際上並不是放置位圖的gui,而是從庫中獲取圖像的方式...是逐個,順序地還是隨機地?
實際上,如果使用VirtualizingStackPanel,它將僅管理gui元素來創建或銷毀,但是如果內存中有完整的位圖集合,那么您將死光。
一種方法是創建不包含位圖的Page對象,並在需要時創建圖像+添加計時器以清除所有“最舊的圖像”
private BitmapImage _Image = null;
/// <summary>
/// the image
/// </summary>
public BitmapImage Image
{
get
{
if (_Image == null)
_Image = (DocumentFactory.Instance.GetService(Parent) as BookService).GetImageFromStream(Parent.FilePath, FilePath);
ImageLastAcces = DateTime.Now;
return _Image;
}
set { _Image = value; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.