【发布时间】:2016-09-21 16:24:59
【问题描述】:
我是 WPF 的新手,正在尝试将 PDF 查看器添加到我的 WPF 应用程序中,但似乎无法弄清楚如何去做...我尝试按照我拥有的几个教程/示例进行操作在网上找到的,但由于各种原因,它们似乎对我不起作用...
例如,我尝试按照以下教程进行操作:https://documentation.devexpress.com/#WPF/CustomDocument114328 在设计时添加一个 PDF 查看器 - 它说
将 PdfViewerControl 从 DX.15.2:Data & Analytics Toolbox 选项卡拖放到主窗口中
但是,我的工具箱中似乎没有 Data & Analytics 选项卡...有一个 Data 选项卡,但只有指针、图表、列表视图等项目。我需要什么在 Visual Studio 中添加/启用Data & Analytics 工具栏?
我尝试按照以下教程进行操作: 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 PDF Reader(这会将 AcroPDF.DLL 添加到工具箱中)。
但我似乎找不到它所说的 Choose Toolbox Items 或 COM Components...
谁能给我指出一个更清晰的教程,或者解释我如何将 PDF 查看器添加到我的 WPF 应用程序中?我正在使用 Visual Studio 2015。
编辑
我尝试通过执行以下操作在我的应用程序窗口中显示 PDF 文件:
添加<Grid> 以在 XAML 中将 PDF 显示到 GUI:
<StackPanel>
<Grid x:Name="browserHost" Height="300" Width="525" Margin="0,0,0,0"></Grid>
</StackPanel>
在 C# 中将 WebBrowser 添加到 <Grid>,并将其指向我要显示的 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 以外的其他东西?
【问题讨论】:
-
前两个控件是来自 devexpress 的商业控件,您必须购买并安装它们。 Adobe 的第三个是 Winforms 控件,它与 WPF 不直接兼容。您需要下载(并安装)一个 WPF PDF 控件,例如 github.com/reliak/moonpdf 或 wpfpdfviewer.codeplex.com
-
或者你可以使用
System.Windows.Controls中的WebBrowser
标签: c# wpf visual-studio xaml pdf