【问题标题】:Universal "document/image viewer" for Delphi?Delphi 的通用“文档/图像查看器”?
【发布时间】:2011-06-02 16:34:35
【问题描述】:

我想在我的 Delphi 程序中查看(仅)图像文件和一些常用文档(PDF、RTF、TEXT 等),我找到了两种方法,

  1. 通过AtViewer,但是文件太大了。
  2. 通过直接安装在最终用户计算机上的嵌入式 Internet Explorer。

我想知道,还有其他选择吗?谢谢。

【问题讨论】:

  • 使用TRichEditTPicture 组合(一次只显示其中一个)? (不过,我从未听说过 PDFT。也许您指的是 PDF - 那么您可以使用 Adob​​e Reader ActiveX 控件。还要注意虽然TRichEdit 可以打开 RTF 文件,但它不能打开 DOC/DOCX 文件,它们是更常见。)
  • 您好安德烈亚斯,感谢您的想法。我的意思是 PDF :) 很抱歉造成混乱。

标签: delphi image viewer documentviewer


【解决方案1】:

这里有两种方法:

  1. 使用 Windows 提供的任何软件
  2. 坚持使用原生 Delphi 组件

我个人喜欢将我的源代码保留为“所有 delphi”。在显示图像方面,Delphi 拥有许多第三方库,可为您提供几乎所有可以想象的图像格式的支持。

图片

ImageEN 是一个很好的软件包(商业),您可能还喜欢免费的 Vapyre Image Library(名字有点……嗯,但它是一个很棒的产品)。为了快速添加对最常见格式的支持,GraphicsEX 是许多开发人员使用的传统 Delphi 扩展。您还拥有 FreeImage,它是 DLL 文件的集合 - 但带有 Delphi 包装类,使它们易于使用。查看 Torry 的 Delphi Pages(谷歌)上的图形部分,您会发现强大的支持。

PDF

对于 PDF 预览/阅读,我会看看 Gnostice 的产品线。它们提供用于生成和查看 PDF 文件的原生 Delphi 组件 (http://www.gnostice.com/)。或者(对于 PDF)我可能会选择 Adob​​e 的 PDF 阅读器附带的 ActiveX 组件。但随后您必须检查这些对象是否已注册并在您的应用程序启动时可用。

所以对于您的“通用查看器”,我会

  1. 创建基本查看器表单(提供按钮、状态栏等)
  2. 添加打开文件的虚拟方法
  3. 从中派生出 3 个表格,每个表格处理不同的媒体类型。所以你得到了 TfrmPDF、TfrmImage 和 TfrmHTML。在每个中,覆盖 open() 方法。这样您的主应用程序就不必担心每种格式的细节。

HTML

对于查看 HTML,你很幸运,因为 Delphi 有它自己的本地 Web 渲染器。它由 Steve Baldwin 编写,名为 THTMLViewer。它已作为开源发布,您可以在 google 项目中找到它。

【讨论】:

  • 感谢第 3 方库的想法和建议!
【解决方案2】:

Windows(如果我没记错的话,自 XP 起)使用IExtractImage 接口为缩略图视图中的任何文件生成缩略图,前提是该文件具有为其文件类型列出的对象。

这些对象可以通过代码访问,您可以使用它们为任何在 Windows 资源管理器中获得缩略图的文件生成缩略图。 (我什至认为缩略图缓存 (Thumbs.db) 会提供您请求的图像大小的缩略图。)

这里还有更多: http://yoy.be/item.asp?i1490 或在这里: http://msdn.microsoft.com/en-us/library/bb775073(v=vs.85).aspx

【讨论】:

  • 感谢提示,但缩略图太小了。
【解决方案3】:

我建议您编写自己的查看器 TForm,查看要查看的文件并使用它执行三(或四、或五)件事情之一:

  1. 如果是 PDF 或 HTML,请使用嵌入式 IE 网络浏览器加载它(来自 www.bsalsa.com 的 TEmbeddedWB 比包含的 VCL IE 包装器 TwebBrowser 更好)。

  2. 如果是图像,请将其加载到支持调整大小/缩放/滚动的图像查看器控件中。

  3. 如果是文本文件或 RTF 文件,请将其加载到 RichEdit 中。

  4. 如果是 OLE 类型,可以在 OLE 容器视图中查看。

【讨论】:

    【解决方案4】:

    嵌入式查看器将显示任何文档 - 但是,如果它需要外部查看器,那么它将在 IE 外部显示 - 每个 TIFF 都显示在图像查看器中(默认情况下)。

    【讨论】:

    • 你的意思是atviewer吗?是的,这是我不喜欢的部分。
    • Mine 提供了 Windows 照片查看器,我想这就是我为 TIFF 注册的。 Image 控件不能很好地处理多页 TIFF,除非我缺少某些东西。
    猜你喜欢
    • 2013-05-10
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 2022-01-05
    • 2017-01-30
    相关资源
    最近更新 更多