C# 将PDF嵌入WPF应用程序

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

我正在尝试在WPF应用程序中嵌入/显示PDF。到目前为止,我已经尝试过这些解决方案,但没有成功:

  • 在托管
    AxAcroPdf的
    WindowsFormsHost
    中显示PDF 控件,类似于所示内容。问题是我的应用程序设置了
    allowsttransparency
    =True
    创建类似于但 这与
    WindowsFormsHost
    (控件 变得不可见)

  • WebBrowser
    控件中显示PDF。问题是一样的

  • 设置
    allowsttransparency=False
    ,但这会在应用程序中造成迟钝的感觉。由于我有意使用WPF来增强业务应用程序的外观和感觉,以使最终用户受益,因此这不是一个解决方案

  • 使用第二个窗口
    allowTransparency=False
    来显示
    WindowsFormsHost
    ,并对其进行修改,使其看起来像主窗口的子控件,如前所述。但是,我不喜欢代码隐藏方法,因为我使用的是MVVM

  • 查找WPF的本机PDF控件。然而,我只找到了几个商业的,这不是一个选择现在

  • 我需要的是能够:

    • 在WPF应用程序中显示PDF或其表示形式(即图像或转换为其他格式)
    • 保持我的风格在视觉上完好无损且流畅(
      allowsttransparency
      必须保持
      True
    • 使用尊重MVVM原则的方法(最好没有代码隐藏)
    • 免费将其包含在我的应用程序中(用于商业用途)

    我对手工制作的解决方案、开源库甚至完全不同的方法完全开放。

    如果你对开源解决方案开放,我会推荐你。您可以将PDF(大多数情况下质量都不错)转换为任何格式的图像文件

    另一个选项是使用将PDF转换为HTML,但它目前仅为Linux编译

    我在Linux和Windows上的几个应用程序中使用了上述两种解决方案。HTML方式的优点是可以复制和粘贴文本。GhostScript方式的优点是图像可能更便于携带(更小)


    与任何开源解决方案一样,您需要了解每个产品发布时所依据的许可条款,以及这可能对最终结果的影响。

    我有两种解决方案:

  • 打开.pdf文件,然后以.xps格式打印(您还必须能够在代码中执行此操作),然后可以在应用程序中嵌入此文件,并将其显示为xps文档。见此:

  • 要使用一个免费的库,我不太确定这是否允许显示pdf,但它会生成它们,您可以看看


  • 希望这些提示有助于解决问题。

    我以前使用过的一个很好的解决方案是使用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。。。