我正在尝试在WPF中显示PDF文件。我已经完成了它,但过了一段时间它停止工作。请帮我下面是我的代码:
else if (result.FileExtension == ".pdf")
{
// TODO: Make sure you point to a PDF on your system:
var str = System.Text.Encoding.Default.GetString(result.ImageToByte);
var uc = new UserControl1(str);
this.windowsFormsHost1.Child = uc;
}
以下是我的UserControl代码:
public UserControl1(string filename)
{
InitializeComponent();
this.axAcroPDF1.LoadFile(filename);
}
和XAML:
<WindowsFormsHost Margin="1" Name="windowsFormsHost1" />
答案 0 :(得分:2)
我在我的一个项目中做了类似的事情。最后,我使用WebBrowser来托管PDF文档。显然这意味着用户需要在他们的机器上安装PDF查看器,但这是一个很小的代价。
我遇到的一个问题是64位机器。为了让PDF在64位机器上显示,我使用了x86 mmachines。
在XAML中:
<WebBrowser visual:WebBrowserExtensions.BindableSource="{Binding Path=Model.AnnouncementUrl, ElementName=Root}"/>
WebbrowserExtensions:
public static class WebBrowserExtensions
{
public static readonly DependencyProperty BindableSourceProperty =
DependencyProperty.RegisterAttached("BindableSource", typeof(object), typeof(WebBrowserExtensions), new UIPropertyMetadata(null, BindableSourcePropertyChanged));
public static object GetBindableSource(DependencyObject obj)
{
return (string)obj.GetValue(BindableSourceProperty);
}
public static void SetBindableSource(DependencyObject obj, object value)
{
obj.SetValue(BindableSourceProperty, value);
}
public static void BindableSourcePropertyChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
WebBrowser browser = o as WebBrowser;
if (browser == null)
return;
Uri uri = null;
if (e.NewValue is string)
{
var uriString = e.NewValue as string;
uri = string.IsNullOrWhiteSpace(uriString) ? null : new Uri(uriString);
}
else if (e.NewValue is Uri)
{
uri = e.NewValue as Uri;
}
browser.Source = uri;
}
}
答案 1 :(得分:0)
我刚刚使用axAcroPDF1控件,加载大型PDF文件时确实遇到了问题。
因此,请尝试以下方法,而不是使用LoadFile:
this.axAcroPDF1.src = filename;