C#(或VB6)将Word文档转换为Tiff

C#(或VB6)将Word文档转换为Tiff,c#,vb6,ms-word,tiff,C#,Vb6,Ms Word,Tiff,我正在开发一个VB6应用程序,它被100多个用户使用。它生成Word文档,然后将文档的TIFF图像保存到数据库中。目前,它只是将打印机设置为Microsoft Office Document Image Writer,将文档“打印”到设置的位置,然后将生成的TIFF文件导入数据库。但是,该组织正在将所有人升级到Office 07,这意味着Microsoft Office Document Image Writer即将退出。因此,我想知道以编程方式将Word转换为TIFF有多难。 我们已经引入了一

我正在开发一个VB6应用程序,它被100多个用户使用。它生成Word文档,然后将文档的TIFF图像保存到数据库中。目前,它只是将打印机设置为Microsoft Office Document Image Writer,将文档“打印”到设置的位置,然后将生成的TIFF文件导入数据库。但是,该组织正在将所有人升级到Office 07,这意味着Microsoft Office Document Image Writer即将退出。因此,我想知道以编程方式将Word转换为TIFF有多难。
我们已经引入了一个C#(.NET3.5)控件库作为COM,所以这似乎是一个放置功能的好地方。在某个时候,我会将整个应用程序转换为3.5,因此我更希望任何新代码都已经存在,这样转换的代码就更少了

编辑:我很感谢你的建议,但我真的很想在不使用昂贵的第三方组件的情况下尝试这样做。很难让那些有钱人看到花上几千美元来修复过去免费工作的东西的好处。另外,我真的很感兴趣的是,我自己需要做些什么。我知道有点受虐狂,但我开始编程是因为我渴望知道事情是如何运作的……:)

谢谢你的帮助

试试这个组件

据我所知(谷歌似乎很快证实了这一点),TIFF格式和文档二进制格式规范都可以在网上免费获得。因此,这将是一个相当大和复杂的项目(我认为是人月而不是人周),您可以编写代码来读取文档并填充对象模型。然后可以编写更多代码,然后将对象模型输出为TIFF文档

但是,只要想想其中的一些复杂性:表格、格式、字符集、间距、嵌入内容等等!我想这就是为什么它通常是昂贵的第三方图书馆或专业文档管理系统的工作


出于兴趣,现在是否应该放弃专有文档格式,将文档作为更易于管理的内容存储在数据库中?

Microsoft Office document Image Writer在Office 2007中仍然可用(至少在Enterprise中可用)-它是可选组件。

您可以使用Microsoft Windows提供的标准“传真”驱动程序,通过编程将Word文档转换为TIFF。这项工作的关键是确保OutputFileName的扩展名为“.tiff” 以下是示例代码(VB.net和Word 2010):


谢谢你的快速回复。我想到了一个第三方dll,但我不知道我是否可以出售它,特别是因为它是为了保持现有(和功能)的应用程序工作。另外,我身上的极客想知道它是如何工作的,以及我自己的工作有多困难。你知道从哪里开始吗?难道你不能把实现MODI打印功能的库包含到你的应用程序中吗?当你说它“生成word文档”时,它是如何做到的?嗨,Joel,我拥有(并且喜欢)你的书。“生成”是个错误的词;该应用程序(使用Office.Interop)只是复制一份现有的商业信函,用名称和地址等替换占位符,并允许用户查看。然后,用户可以打印信件并保存图像。
Dim objWdDoc As Word.Document
Dim objWord As Word.Application
Dim sDesktop As String = Environment.GetEnvironmentVariable("userprofile") & "\Desktop\"

objWord = CreateObject("Word.Application")
objWdDoc = objWord.Documents.Open(sDesktop & "testdocument.doc")
objWord.Visible = True

'Select Printer
objWord.ActivePrinter = "Fax"
'Print to Tiff
objWdDoc.PrintOut(Range:=WdPrintOutRange.wdPrintAllDocument, _
                      OutputFileName:=sDesktop & "test.tiff", _
                      Item:=WdPrintOutItem.wdPrintDocumentContent, _
                      PrintToFile:=True)
'Close Document
objWdDoc.Close()
'Close Word
objWord.Quit()
'General Cleanup
objWdDoc = Nothing
objWord = Nothing