Nob*_*fer 10 c# pdf wpf xaml visual-studio
我是WPF的新手,我正在尝试为我的WPF应用程序添加一个PDF查看器,但似乎无法解决如何做到这一点...我已经尝试过我在网上找到的几个教程/示例,但由于各种原因,它们似乎对我不起作用......
例如,我尝试按照以下教程:https: //documentation.devexpress.com/#WPF/CustomDocument114328在设计时添加PDF查看器 - 它说到
从DX.15.2:数据和分析工具箱选项卡拖动PdfViewerControl并将其拖放到主窗口
但是,我似乎没有Data & Analytics工具箱中的Data选项卡...有一个选项卡,但只有指针,图表,ListView等项目.我需要做些什么来添加/启用Data & AnalyticsVisual中的 工具栏工作室?
我尝试按照以下教程:https: //documentation.devexpress.com/#WPF/CustomDocument114329通过代码添加PDF查看器 - 它说
打开Solution Explorer,右键单击References并选择Add Reference ...以添加PDF Viewer Library.
然后,找到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文件:
添加a <Grid>以在XAML中将PDF显示到GUI:
<StackPanel>
<Grid x:Name="browserHost" Height="300" Width="525" Margin="0,0,0,0"></Grid>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
添加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);
}
Run Code Online (Sandbox Code Playgroud)
但是目前,当我运行我的应用程序时,一旦加载,browser我添加到它的页面会显示一个页面:
导航到网页已取消
弹出一个对话框询问我是否要打开或保存文件(sample.pdf- 我试图在浏览器中显示的那个)...
为什么要尝试下载文件,而不是显示它?如何才能browser显示文件而不是尝试下载?或者我应该使用除此之外的其他东西System.Windows.Controls.WebBrowser?
Voj*_*nal 11
正如@NawedNabiZada已经提出的,一种经过验证的直接方法是使用嵌入式InternetExplorer来显示Adobe PDF ReaderActiveX控件.因此它假设您在Windows上运行并已Adobe PDF Reader安装.
然后创建一个包含以下控件的用户控件,窗口等:
<WebBrowser x:Name="pdfWebViewer"></WebBrowser>
Run Code Online (Sandbox Code Playgroud)
在构造函数中导航到空白页面:
pdfWebViewer.Navigate(new Uri("about:blank"));
Run Code Online (Sandbox Code Playgroud)
要将PDF文档加载到该控件,请使用以下简单代码:
pdfWebViewer.Navigate(fullPathToPDF);
Run Code Online (Sandbox Code Playgroud)
许多Windows软件使用这种方法不仅包括WPF应用程序,包括SAP客户端,而且还有隐藏的问题,请参阅此问题.
必须启用Internet Explorer中的Adobe PDF Reader Addon才能使其正常工作.Acrobat Reader XI存在各种问题,最好使用DC版本.要启用Adobe PDF,请转到IE设置,加载项并查找Adobe PDF Reader并启用它(AR XI及更高版本).
对我而言,与您链接的代码项目文章相比,这是首选方式.
fun*_*ies 10
发布带有 @GeersJ 评论的答案以获得更好的可见性。
微软现在通过WebView2做到了这一点。
这种方法是迄今为止最简单的,并且可能是大多数开发人员正在寻求的前进方向。
在OP的上下文中,解决方案看起来像
<wv2:WebView2 Name="webView" Source="C:\sample.pdf"/>
Run Code Online (Sandbox Code Playgroud)
添加 xmlns
xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"
Run Code Online (Sandbox Code Playgroud)
为此,您需要 nuget 包:
<PackageReference Include="Microsoft.Web.WebView2" Version="X.X.X.X" />
Run Code Online (Sandbox Code Playgroud)
对于任何对此绊脚石,并且需要比WebBrowser稍微多一点控制的人:使用Windows 10 API制作自己的PDF查看器非常容易。我写了一篇关于如何做的博客。您可以轻松地向其添加其他功能,例如在其顶部绘制(签名)等等。
该代码可在github上找到。
但是,对于超高级功能,您可能需要这些花哨的昂贵库之一。
| 归档时间: |
|
| 查看次数: |
32016 次 |
| 最近记录: |