【问题标题】:How to create thumbnail of Word doc when it doesn’t have one saved?没有保存的Word文档如何创建缩略图?
【发布时间】:2011-11-28 00:30:38
【问题描述】:

我想创建一个 COM dll,它将获取任何 Word 文件并生成文档第一页的图像文件。我已经使用 Windows SDK 的 IExtractImage 功能完成了这项工作,但这仅在文件中保存有缩略图时才有效。 (由于 Word 用户必须通过进入“准备”|“属性”对话框的“高级”选项来保存缩略图,因此大多数 Word 文档都没有可用的预览。)

(不幸的是,我一直坚持使用 COM,因为我正在将此解决方案与无法与 .NET 很好交互的现有 ASP Web 应用程序集成。)

我正在考虑的一种方法是使用生成 PDF 的 SDK 生成文件的 PDF,或者理想情况下仅生成文件第一页的 PDF,然后从 PDF 生成预览图像。 (我无权访问 Adob​​e 的专有 PDF SDK,但如果证明它适用于该解决方案,我会考虑购买许可证。)

理想情况下,我希望能够生成除 Word 文档之外的许多其他(非图像)文件类型的预览。

我注意到 Google 现在提供了多种文件的预览,我想知道他们使用了什么方法。

欢迎任何想法、线索、建议和/或侮辱。

谢谢。

【问题讨论】:

    标签: pdf com sdk ms-word thumbnails


    【解决方案1】:

    旧 OLE-Automation 属性页的缩略图是一个非常小的(甚至没有抗锯齿)黑白图元文件,这些天看起来并不好。在经典的 VB6 或 VBA 中,您可以通过几行代码触发保存缩略图(如果我没记错的话)。但是,Winword、Excel 等是通过不可见地加载 Gui 应用程序来自动化的,这并不总是在(Web)服务器环境中工作。考虑在上传/病毒扫描时对文档进行缩略图,但不要从加载到 Web 服务器的 DLL 中。

    google 方法最有可能建立在一些在经典 ASP 下也不起作用的开源组件之上。

    【讨论】:

      【解决方案2】:

      ASP?你可以使用2JPEG。它支持275 formats(包括 Word、Excel、Publisher 和 Powerpoint 文件。)供应商建议将 2JPEG 作为计划的后台任务调用,以免影响性能。

      这里有几个examples

      命令行语法。您可以从批处理文件或 Windows 任务计划程序开始:

      2jpeg.exe -src "C:\In\*.*" -dst "C:\Out"
      

      从 Visual C++ 应用程序启动命令行:

      ShellExecute(NULL, "open", "2jpeg.exe", "-src \"C:\\In\\*.*\" -dst \"C:\\Out\"", NULL, SW_HIDE)
      

      来自 Visual Basic:

      Shell ("""2jpeg.exe"" -src ""C:\In\*.*"" -dst ""C:\out""")
      

      德尔福语法:

      ShellExecute(0, 'open', PChar('2jpeg.exe'), PChar('-src "C:\In\*.*" -dst "C:\Out"'), nil, 0);
      

      Windows 服务器上的 PERL 脚本:

      exec '2jpeg.exe -src C:\In\*.* -dst C:\out';
      

      VB脚本代码示例:

      Set objShell = WScript.CreateObject("WScript.Shell")
      objShell.Run """2jpeg.exe"" -src ""C:\In\*.*"" -dst ""C:\Out""", 1, True
      Set objShell = Nothing
      

      JavaScript 代码示例:

      var objShell = new ActiveXObject("Shell.Application");
      objShell.ShellExecute("2jpeg.exe", "-src \"C:\\In\\*.*\" -dst \"C:\\Out\"", "", "open", "1");
      

      PHP 代码示例:

      <?php
      echo exec('2jpeg.exe -src "C:\In\*.*" -dst "C:\Out" -oper Resize size:"800 600" -jpeg quality:50');
      ?>
      

      从 C# 应用程序启动 2JPEG:

      System.Diagnostics.Process.Start("2jpeg.exe", "-src \"C:\\In\\*.*\" -dst \"C:\\Out\"");
      

      【讨论】:

        猜你喜欢
        • 2010-11-03
        • 2012-02-18
        • 2011-04-13
        • 2014-01-13
        • 1970-01-01
        • 1970-01-01
        • 2015-03-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多