Delphi的通用“文档/图像查看器”?

时间:2011-01-03 03:59:52

标签: delphi image viewer documentviewer

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

  1. 通过AtViewer,但文件太大。
  2. 直接通过最终用户计算机上安装的嵌入式Internet Explorer。
  3. 我想知道,有替代方案吗?感谢。

4 个答案:

答案 0 :(得分:4)

Windows(如果我没记错的话,自XP以来)使用IExtractImage界面为缩略图视图中的任何文件生成缩略图,如果它有一个列出其文件类型的对象。

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

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

答案 1 :(得分:4)

有两种方法可以到这里:

  1. 使用Windows提供的任何软件
  2. 坚持原生Delphi组件
  3. 我个人喜欢保留我的来源"所有delphi"。在显示图像时,Delphi拥有许多第三方库,可以为您提供几乎所有可以想象的图像格式的支持。

    图片

    ImageEN是一个很好的包(商业),您可能也喜欢免费的Vapyre图像库(名称有点......好吧,但它是一个很棒的产品)。为了快速添加对最常见格式的支持,GraphicsEX是许多开发人员使用的传统Delphi扩展。你也有FreeImage,它是DLL文件的集合 - 但是使用Delphi包装类使它们易于使用。看一下Torry的Delphi页面上的图形部分(google it),你会发现强有力的支持。

    <强> PDF

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

    所以对于你的&#34;通用观众&#34;我会

    1. 创建基本查看器表单(提供按钮,状态栏等)
    2. 添加用于打开文件的虚拟方法
    3. 从中下载3个表单,每个表单处理不同的媒体类型。所以你得到TfrmPDF,TfrmImage和TfrmHTML。在每个中,重写open()方法。这样您的主要应用程序就不必费心去处理每种格式的细节。
    4. <强> HTML

      为了查看HTML,您很幸运,因为Delphi拥有自己的原生Web渲染器。它由Steve Baldwin编写,名为THTMLViewer。它已作为开源发布,您将在谷歌项目中找到它。

答案 2 :(得分:2)

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

  1. 如果是PDF或HTML,请使用嵌入式IE webbrowser加载(来自www.bsalsa.com的TEmbeddedWB优于附带的VCL IE包装器TwebBrowser)。

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

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

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

答案 3 :(得分:0)

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