【问题标题】:System.Windows.Forms.WebBrowser control to display pdfSystem.Windows.Forms.WebBrowser 控件显示pdf
【发布时间】:2012-11-02 05:35:42
【问题描述】:

有什么方法可以查询 IE 插件(Adobe Reader)的状态吗?我有一种情况,我们通过标签页托管的嵌入式浏览器(基于我的研究的首选模式)向用户呈现许多多页报告。当用户离开报告时,通常是为了修改数据,他们返回到重新初始化的 Adob​​e Reader。这意味着它们的位置已丢失,扩展的书签节点已折叠。

下面是一个简化的代码 sn-p,我希望它能够充分表达我的问题的本质。

Public partial class ReportView : UserControl
{ 
    private System.Windows.Forms.WebBrowser webBrowser; 
    private MyNamespace.ReportGenerator reportGen;  
    private String currentPDFtempPath; 

    public ReportView() 
    {
        InitializeComponent();
        this.Leave += (o, e) => { /*how can I save current place in pdf?*/ };
        this.Enter += (o, e) => { /*return user last place in large pdf*/ };
    }

    public void ViewReport(string reportName)
    {
        currentPDFtempPath = reportGen.GetReport(reportName);
        webBrowser.Navigate(currentPDFtempPath);
    }

    private void RefreshReport()
    {
        webBrowser.Navigate(currentPDFtempPath); /*reinitializes Adobe Reader*/
    }
}

public class ReportController
{
    private DataModel model;
    private ReportView view;

    ReportController(DataModel m, ReportView v)
    {
        this.model = m;
        this.view = v;

        model.Changed += (o, e) => { view.RefreshReport(); }
    }
}

【问题讨论】:

  • 很难看出这段代码的意义。只需删除 Enter 事件处理程序。
  • 对模型数据进行更改时需要重新生成报告。真实的代码通过控制器以不同的方式处理它,但我认为这是表达我想要完成的本质的最简洁的方式。
  • 只需调用 ViewReport 即可显示另一份报告。 Enter 事件不会修改模型数据,因此应该重新生成报告。
  • 我根据您的评论修改了代码以提供更准确的表示。有一个控制器类,最初为了简洁而省略,它修改模型并更新视图。

标签: c# winforms browser .net-2.0


【解决方案1】:

如果您的用户群已标准化为 Acrobat 的一个版本或不断更新到最新最好的 Acrobat,另一种解决方案是取消 Web 浏览器控件并添加对 AcroPDF/AxAcroPDF 库/active x 控件的引用,该控件有效从 Windows 窗体。在过去的 6 年里,我一直在我的公司中使用它,并且效果很好。

【讨论】:

  • 用户群远未标准化,但我曾考虑将特定版本的 Adob​​e Reader 与我的安装捆绑在一起并使用活动 x 控件。尽管这需要进行重大的重写,但我在活动 x 控件的 API 参考方面遇到了困难,并且我在一个线程上看到了一个评论,即新版本的 Adob​​e Reader 对此提供的支持较少。
猜你喜欢
  • 2013-04-23
  • 2017-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-27
  • 2015-03-20
  • 2023-04-03
相关资源
最近更新 更多