2009-02-04 4 views
1

Я работаю над приложением VB6, которое используется более чем сотней пользователей. Он создает документ Word, а затем сохраняет TIFF-образ документа в базе данных. В настоящее время он просто устанавливает принтер в Microsoft Office Document Image Writer, «печатает» документ в заданное местоположение, а затем импортирует полученный TIFF-файл в базу данных. Тем не менее, организация находится в процессе обновления каждого до Office 07, а это значит, что Microsoft Office Document Image Writer уходит. Итак, я хотел бы знать, как сложно было бы программно конвертировать из Word в TIFF.
Мы уже приводим библиотеку управления C# (.NET 3.5) как COM, так что это кажется хорошим местом для установки функций. В какой-то момент я буду конвертировать все приложение в 3.5, поэтому я бы предпочел, чтобы какой-нибудь новый код уже был там, поэтому конвертировать было меньше.C# (или VB6) Преобразование Word doc в Tiff

EDIT: Я ценю предложения, но мне бы очень хотелось попробовать это, не используя дорогостоящие сторонние компоненты. Трудно получить деньги, чтобы ребята увидели достоинство тратить тысячи долларов на то, чтобы исправить то, что раньше работало бесплатно. Кроме того, я искренне заинтересован в том, что потребуется, чтобы свернуть ее самостоятельно. Немного мазохистский, я знаю, но я начал программировать, потому что я проклят желанием узнать, как все работает ... :)

Спасибо за вашу помощь!

+0

Cant вы просто включить библиотеки, которые делают, что Моди функции печати в ваше приложение? – StingyJack

+0

Когда вы говорите, что «генерирует документ слов», как он это делает? –

+0

Привет, Джоэл, я владею (и наслаждаюсь) вашей книгой. «Создать» - это неправильное слово; приложение (с использованием Office.Interop) просто создает копию существующего бизнес-письма, заменяет местозаполнители именем и адресом и т. д. и позволяет пользователю просматривать его. Затем пользователь может распечатать письмо и сохранить изображение. – 2009-02-05 20:32:59

ответ

0

Попробуйте сделать Aspose.Word компоненты

+0

Спасибо за быстрый ответ. Я думал о сторонней dll, но я не знаю, могу ли я это продать, тем более, что это должно поддерживать существующее (и функционирующее) приложение. Кроме того, выродка во мне хочет знать, как это работает, и как тяжело было бы сворачивать мои собственные. любая идея, с чего начать? – 2009-02-04 16:17:51

2

Насколько я знаю (и быстрый Google, кажется, подтверждает это), и формат TIFF и спецификация двоичного формата DOC доступны бесплатно в Интернете для. Поэтому, и это был бы довольно большой и сложный проект (я думаю, что человеческие месяцы, а не человеческие недели), вы можете написать код, чтобы прочитать документ DOC и заполнить объектную модель. Затем вы можете написать больше кода для вывода объектной модели в виде документа TIFF.

Но подумайте о некоторых сложностях: Таблицы, форматирование, наборы символов, интервал, встроенный контент и т. Д. Eek! Полагаю, именно поэтому обычно работают дорогие сторонние библиотеки или профессиональные системы управления документами.

Из интереса, может быть, это время, чтобы отойти от проприетарных форматов документов и сохранить документ в БД как нечто более управляемое?

0

Microsoft Office Document Image Writer по-прежнему доступен в Office 2007 (по крайней мере, с Enterprise) - это необязательный компонент.

1

Вы можете конвертировать документ Word в TIFF программно, используя стандартный драйвер «Факс», поставляемый с Microsoft Windows. Ключ к этой работе является обеспечение OutputFileName имеет расширение «.tiff» Вот пример кода (VB.net & Word 2010):

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