C# 将PDF嵌入WPF应用程序
我正在尝试在WPF应用程序中嵌入/显示PDF。到目前为止,我已经尝试过这些解决方案,但没有成功:C# 将PDF嵌入WPF应用程序,c#,wpf,vb.net,mvvm,axacropdf,C#,Wpf,Vb.net,Mvvm,Axacropdf,我正在尝试在WPF应用程序中嵌入/显示PDF。到目前为止,我已经尝试过这些解决方案,但没有成功: 在托管AxAcroPdf的WindowsFormsHost中显示PDF 控件,类似于所示内容。问题是我的应用程序设置了allowsttransparency =True创建类似于但 这与WindowsFormsHost(控件 变得不可见) 在WebBrowser控件中显示PDF。问题是一样的 设置allowsttransparency=False,但这会在应用程序中造成迟钝的感觉。由于我有意使用WP
AxAcroPdf的WindowsFormsHost
中显示PDF
控件,类似于所示内容。问题是我的应用程序设置了allowsttransparency
=True
创建类似于但
这与WindowsFormsHost
(控件
变得不可见)
WebBrowser
控件中显示PDF。问题是一样的allowsttransparency=False
,但这会在应用程序中造成迟钝的感觉。由于我有意使用WPF来增强业务应用程序的外观和感觉,以使最终用户受益,因此这不是一个解决方案allowTransparency=False
来显示WindowsFormsHost
,并对其进行修改,使其看起来像主窗口的子控件,如前所述。但是,我不喜欢代码隐藏方法,因为我使用的是MVVM- 在WPF应用程序中显示PDF或其表示形式(即图像或转换为其他格式)
- 保持我的风格在视觉上完好无损且流畅(
必须保持allowsttransparency
)True
- 使用尊重MVVM原则的方法(最好没有代码隐藏)
- 免费将其包含在我的应用程序中(用于商业用途)
我对手工制作的解决方案、开源库甚至完全不同的方法完全开放。如果你对开源解决方案开放,我会推荐你。您可以将PDF(大多数情况下质量都不错)转换为任何格式的图像文件 另一个选项是使用将PDF转换为HTML,但它目前仅为Linux编译 我在Linux和Windows上的几个应用程序中使用了上述两种解决方案。HTML方式的优点是可以复制和粘贴文本。GhostScript方式的优点是图像可能更便于携带(更小)
与任何开源解决方案一样,您需要了解每个产品发布时所依据的许可条款,以及这可能对最终结果的影响。我有两种解决方案:
希望这些提示有助于解决问题。我以前使用过的一个很好的解决方案是使用CefSharp。它是支持预览PDF文档的Chrome浏览器引擎。 访问 如果您有问题,建议访问以设置适当的设置 如果要在本地驱动器上显示PDF文件,还应在浏览器中使用这些设置,然后使用
文件://
协议:
CefSharp.BrowserSettings browserSettings = new CefSharp.BrowserSettings();
browserSettings.FileAccessFromFileUrls = CefSharp.CefState.Enabled;
browserSettings.UniversalAccessFromFileUrls = CefSharp.CefState.Enabled;
browserSettings.TextAreaResize = CefSharp.CefState.Enabled;
my_bowser.BrowserSettings = browserSettings;
这是因为基于意见而搁置的,但我要求的实际上是解决一个众所周知的WPF错误。我相信这个问题可以通过
事实、参考资料或特定专业知识来回答。事实上,已经有一个答案符合这个描述。我是在要求一种健壮的或经验证的方法
?我使用并将其包装在一个方便的小WPF控件中,在该控件中我可以绑定PDF的文件路径。它会从PDF自动生成png文件,并在滚动查看器中的图像的列表框中显示它们。虽然在png生成过程中性能不是最优的,但它仍然可以保持我的UI流畅和代码干净。好处:此解决方案减少了与调整/重画WindowsFormsHost
相关的视觉问题。使用PDF,如果您只是处理页面的图像,使用jpg格式可能会为您节省更多的空间/时间。。。如果您所处理的都是带有简单图表的文本文档,和/或您希望OCR高效地处理这些文档,那么png就是一个不错的选择。。。但是:如果制作无损png的唯一原因是为了查看图像丰富的pdf文件或在线查看,那么就没有理由制作无损png。。。