我对WPF很陌生,并且试图在我的WPF应用程序中添加一个PDF查看器,但似乎无法想出如何实现它……我尝试了几个教程/例子,我在网上发现,但它们似乎不适合我,因为不同的原因.
例如,我试着按照教程at:https://documentation.devexpress.com/#WPF/CustomDocument114328在设计时添加一个PDF它说
从DX.15.2: Data & Analytics工具箱选项卡中拖动PdfViewerControl并将其拖放到主窗口
然而,我似乎在工具箱中没有Data & Analytics选项卡.有一个Data选项卡,但只有指针、图表、ListView等项。在Visual中添加/启用Data & Analytics工具栏需要做些什么吗?
我试着按照教程at:https://documentation.devexpress.com/#WPF/CustomDocument114329通过代码添加一个PDF它说
打开解决方案资源管理器,右键单击引用并选择添加引用.若要添加PDF查看器库,请执行以下操作。 然后,定位DevExpress.Data.v15.2、DevExpress.Pdf.v15.2.Core、DevExpress.Xpf.DocumentViewer.v15.2.Core和DevExpress.Xpf.PdfViewer.v15.2程序集并激活它们的复选框。
但是当我去Add Reference时,我找不到它在任何地方提到的程序集,如果我‘搜索’它们,就找不到任何项目.
我是不是缺少了一个include,还是需要从某个地方导入一些库来使用这些库?
我试过的另一个例子是:http://www.codeproject.com/Articles/380019/Using-Adobe-Reader-in-a-WPF-app,它说:
将此控件添加到项目中后,Windows窗体设计器应使用空白画布打开。您需要打开工具箱(CTRL + W,X)。作为第一步,为自定义控件添加一个新的选项卡是个好主意--这是工具箱上上下文菜单中的一个选项。展开此新选项卡后,从上下文菜单中选择“选择项”。当出现“选择工具箱项”对话框时,选择COM组件选项卡并选择Adobe (这将将AcroPDF.DLL添加到工具箱中)。
但我似乎找不到它谈论的Choose Toolbox Items或COM Components .
有人能告诉我一个更清晰的教程,或者解释我如何在我的WPF应用程序中添加一个PDF查看器吗?我正在使用2015。
编辑
通过执行以下操作,我尝试在应用程序窗口中显示PDF文件:
添加一个<Grid>以将PDF显示到XAML中的GUI中:
<StackPanel>
<Grid x:Name="browserHost" Height="300" Width="525" Margin="0,0,0,0"></Grid>
</StackPanel>将WebBrowser添加到<Grid>中的C#中,并将其指向要显示的PDF的位置:
System.Windows.Controls.WebBrowser browser = new System.Windows.Controls.WebBrowser();
public MainWindow()
{
InitializeComponent();
try
{
//browser.Navigate("C:\\...\\sample.pdf");
browserHost.Children.Add(browser);
//browser.Visible = true;
browser.Navigate("C:\\...\\sample.pdf");
browserHost.Opacity = 200;
}catch(Exception e)
{
Console.WriteLine("browser is visible/ not: " + browserHost.Visibility);
}
}
private void Window_Loaded_1(object sender, RoutedEventArgs e)
{
/*Create the interop host control */
//System.Windows.Forms.Integration.WindowsFormsHost host = new System.Windows.Forms.Integration.WindowFormsHost();
/*Create the MaskedTextBox control */
//browser.Navigate("C:\\...\\sample.pdf");
//host.Child = browser;
browserHost.Children.Add(browser);
}但是目前,当我运行我的应用程序时,一旦它加载,我添加到它的browser就会显示一个页面,上面写着:
到网页的导航被取消
然后弹出一个对话框,询问我是否要打开或保存文件(sample.pdf -我试图在浏览器中显示的文件).
为什么它要下载文件而不是显示它呢?如何让browser显示文件而不是试图下载它呢?还是应该在这里使用System.Windows.Controls.WebBrowser以外的其他东西?
发布于 2016-05-24 13:15:59
正如@NawedNabiZada所建议的那样,一种尝试而直接的方法是使用嵌入式InternetExplorer来显示Adobe PDF Reader ActiveX控件。因此,它假定您正在Windows上运行,并安装了Adobe PDF Reader。
然后创建包含以下控件的用户控件、窗口等:
<WebBrowser x:Name="pdfWebViewer"></WebBrowser>在构造函数中导航到空白页:
pdfWebViewer.Navigate(new Uri("about:blank"));要将PDF文档加载到该控件,请使用以下简单代码:
pdfWebViewer.Navigate(fullPathToPDF);许多Windows软件都使用这种方法,不仅包括WPF应用程序(包括SAP ),而且还有一个隐藏的问题,参见这个问题。
必须启用中的插件才能使其工作。有各种问题,最好使用DC版本。要使Adobe转到IE设置,添加并找到并启用它(AR及以上版本)。
对我来说,与您链接的代码项目文章相比,这是首选的方法。
发布于 2018-02-02 11:29:36
发布于 2021-06-21 11:04:20
@LanderV的回答很好。唯一的挑战是他在github上的解决方案使用VS2014和.NET Framwork 4.7.1,而我使用的是VisualStudio2019和.NET 5。我花了一天时间在我的PC上运行Framwork4.7解决方案,但让它在.NET 5下运行非常容易。我在这里解释这两种配置应该采取的步骤。
.NET 5
如果您想知道发生了什么,请阅读learn.microsoft.com:将桌面升级为uwp。
在VS中创建一个新的WPF .Net 5解决方案。
在WPF项目文件中,更改
<TargetFramework>net5.0-windows</TargetFramework> 至
<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>如果您的PC上的Windows是一个不同的版本,相应地更改19041。您可能会收到关于不正确的.json文件的错误消息,但是清除解决方案,重新构建它,就不会有更多的错误。
现在只需复制Githup的源代码:
MainWindow.xaml
MainWindow.xaml.cs
PdfViewer.xaml
PdfViewer.xaml.cs
现在您应该能够运行应用程序了。
.NET框架4.7.1
如果可以的话,使用.NET 5或更高版本,就像上面描述的那样,它要容易得多。要运行Github代码,我必须执行以下步骤:
下载.NET框架4.7.1,developer pack https://dotnet.microsoft.com/download/dotnet-framework/net471
阅读帮助https://learn.microsoft.com/en-us/windows/apps/desktop/modernize/desktop-to-uwp-enhance
使用NuGet包管理器安装Microsoft.Windows.SDK.Contracts
将出现一条关于安装两次.dll的错误消息。将其保存在nuget位置,删除存储在.NET框架位置中的引用下的引用。
项目应该编译并运行。
从引用中删除Windows,将无法找到它,并且不再需要它。
https://stackoverflow.com/questions/37413861
复制相似问题