【问题标题】:Embedded PDF Viewer in a WinForms ControlWinForms 控件中的嵌入式 PDF 查看器
【发布时间】:2010-11-01 22:26:58
【问题描述】:

我正在尝试在 WinForms 控件中嵌入 pdf 查看器,以便在我的应用程序上下文中向用户显示 pdf。我还需要防止用户复制文本、打印或保存副本(敏感数据)。

到目前为止,我已经尝试使用 WebBrowser 来托管 Acrobat Reader activex 控件。这让我很接近,但给我留下了两个问题。
1. 从文件句柄的角度来看,我打开的任何 pdf 文件似乎都保持打开状态,直到应用程序关闭。我试过调用 Dispose() 和 Navigate() 无济于事。
2. 我需要禁用 Reader 中的工具栏。我无法在原始 pdf 文件中设置查看器首选项,但我正在考虑使用 iText 重写带有首选项集的文件(如果我能做到的话)。

我也很高兴有一个值得推荐的第三方库。

【问题讨论】:

    标签: .net winforms pdf


    【解决方案1】:

    Re: 1. 这有点糟糕,但你可以将 PDF 复制到临时文件夹

    Path.GetTempPath()
    

    并在每次用户需要查看该 PDF 时打开它,这样您就可以让 Reader 锁定它想要的所有文件。

    Re: 2. 你有没有尝试追加

    toolbar=0
    

    到网址?参考(和示例!)在:

    http://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf#toolbar=0

    【讨论】:

      【解决方案2】:

      您可以使用 iText 重写文件。我有由外部应用程序创建的 PDF,需要通过电子邮件发送给客户。我使用 iText 加密它们并更改权限:

      导入 iTextSharp.text.pdf ....

      Dim reader As PdfReader = New PdfReader(fileName)
      PdfEncryptor.Encrypt(reader, New FileStream(mailFileName, FileMode.CreateNew), PdfWriter.STRENGTH128BITS, _
          "password", "password", PdfWriter.AllowCopy Or PdfWriter.ALLOW_PRINTING)
      

      【讨论】:

        【解决方案3】:

        我推荐 DevExpress(一个商业的 3rd 方 UI 库)的 WinForms PDF Viewer UI 控件。借助其全面的 API,您可以防止最终用户复制文本、打印、保存副本等。

        【讨论】:

          猜你喜欢
          • 2014-08-07
          • 2020-01-31
          • 2011-01-16
          • 1970-01-01
          • 2012-12-14
          • 1970-01-01
          • 2011-07-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多