【发布时间】:2016-09-23 03:13:00
【问题描述】:
我有一个正在 WPF 和 C# 中开发的应用程序。我目前正在考虑添加能够在我的应用程序中加载和查看 PDF 文件(以及具有自定义扩展名的文件)的功能。
我已经设法让 PDF 文件显示在我的应用程序中,使用 System.Windows.Controls.WebBrowser 来显示文档,但是,这并没有给我想要的对文档的控制权...
例如,当使用WebBrowser查看文档时,用户可以保存/打印文档,或者在这些文档上选择和复制文本等,但是由于我将使用它来显示一些机密信息,我想在我正在显示的文档上“禁用”这些功能。
基本上,我想在我的应用程序中在屏幕上显示文档,但不允许用户与文档进行任何其他交互。
我知道这不会阻止用户对内容进行截图/照片,但至少我会尽我所能确保信息的机密性。
但是,通过使用WebBrowser 显示PDF 文件,正如我已经完成的那样,用户自动拥有WebBrowser 提供的内置功能,可供他们使用(保存、打印、突出显示文本、复制) ,而且我找不到禁用这些功能的方法。
似乎我想使用 PDF 查看器控件来显示 PDF,而不是 Web 浏览器,因此我决定尝试使用名为 PDFSharp (https://sourceforge.net/projects/pdfsharp/?source=typ_redirect) 的开源控件。我已经下载了 MoonPDF 的源代码,但我不确定现在如何将其合并到我的应用程序中...?
我已经下载了源文件,但似乎在任何地方都没有 .sln 文件,所以我无法自行构建/运行 PDF 查看器...我将如何在我的应用程序中使用它?我不能创建 PDF 查看器的实例以在我的应用程序中使用 - 这样我就可以将它作为对象添加到我的应用程序的 GUI 中 - 我将如何处理?
编辑
我已更改我的应用程序以使用 MoonPdf 查看器 - 已构建 MoonPdf,并将 DLL 复制到我的项目中,我已编辑我的 XAML 以使用这些库:
<Window ...
xmlns:mpp="clr-namespace:MoonPdfLib;assembly=MoonPdfLib"
...>
<DockPanel>
...
<Grid x:Name="host" DockPanel.Dock="Top" Margin="0,0,0,0">
<mpp:MoonPdfPanel x:Name="PdfPanel" ... />
</Grid>
</DockPanel>
</Window>
我的.cs文件如下:
public partial class MainWindow:Window{
String docFP = "C:\\...\\abc.pdf";
public MainWindow(){
InitializeComponent();
try{
host.Children.Add(PdfPanel);
host.Opacity = 200;
PdfPanel.OpenFile(docFP, null);
}catch(Exception e){
Console.WriteLine("browser is visible/ not: " + host.Visibility);
}
}
private void Window_Loaded_1(object sender, RoutedEventArgs e){
host.Children.Add(PdfPanel);
}
private void openFileMenuItem_click(object sender, RoutedEventArgs e){
// Working code for opening an 'open file' dialog, selecting the file, and loading it.
}
...
但是,当我当前运行我的代码时,应用程序会打开,但不显示应直接在我的代码中打开和显示的 PDF,如果我尝试加载一个,请使用调用 @ 的菜单项987654329@ 函数,我的代码中断,我得到一个 BadImageFormatException ,它说:
BadImageFormatException 未处理
MoonPdfLib.dll 中出现“System.BadImageFormatException”类型的未处理异常
但我知道我尝试打开的文件没有任何问题,因为我可以在 Adobe 中打开并查看它没有任何问题...
任何想法为什么应用程序没有自动加载和显示我在代码中引用的 PDF,或者为什么我在尝试使用“加载文件”功能加载它时遇到异常?
【问题讨论】:
-
PDFSharp 有 WPF 查看器控件吗?
标签: c# wpf pdf open-source reader