2009-02-04 13 views
1

Je travaille sur une application VB6 qui est utilisée par plus d'une centaine d'utilisateurs. Il génère un document Word, puis enregistre une image TIFF du document dans une base de données. Actuellement, il définit simplement l'imprimante sur Microsoft Office Document Image Writer, "imprime" le document à un emplacement défini, puis importe le fichier TIFF résultant dans la base de données. Toutefois, l'organisation est en train de mettre à niveau tout le monde vers Office 07, ce qui signifie que Microsoft Office Document Image Writer disparaît. Donc, j'aimerais savoir à quel point il serait difficile de convertir par programme Word en TIFF.
Nous apportons déjà une bibliothèque de contrôle C# (.NET 3.5) COM, ce qui semble être un bon endroit pour mettre cette fonctionnalité. À un moment donné, je vais convertir l'ensemble de l'application à 3,5, donc je préférerais que tout nouveau code soit déjà là, donc il y a moins à convertir.C# (ou VB6) Convertir Word doc en Tiff

EDIT: J'apprécie les suggestions, mais j'aimerais vraiment essayer de le faire sans utiliser de composants tiers coûteux. Il est difficile d'obtenir l'argent des gens pour voir le mérite de dépenser des milliers de dollars pour réparer quelque chose qui avait l'habitude de travailler gratuitement. De plus, je m'intéresse vraiment à ce qu'il faudrait pour le faire rouler moi-même. Un peu masochiste, je sais, mais je suis entré dans la programmation parce que je suis maudit avec le désir de savoir comment ça marche ... :)

Merci pour votre aide!

+0

Cant vous incluez que les bibliothèques qui font que les fonctions d'impression MODI dans votre application? – StingyJack

+0

Quand vous dites "génère un document Word", comment fait-il cela? –

+0

Bonjour Joel, je possède (et apprécie) votre livre. "Génère" est le mauvais mot; l'application (using Office.Interop) fait juste une copie d'une lettre commerciale existante, remplace des espaces réservés avec le nom et l'adresse et tels, et permet à l'utilisateur de l'afficher. L'utilisateur peut alors imprimer la lettre et enregistrer l'image. –

Répondre

0

Essayez le composant Aspose.Word

+0

Merci pour la réponse rapide. J'ai pensé à une DLL tierce, mais je ne sais pas si je peux la vendre, d'autant plus que c'est pour garder une application existante (et qui fonctionne). De plus, le geek en moi veut savoir comment cela fonctionne, et comment il serait difficile de rouler le mien. aucune idée par où commencer? –

2

Pour autant que je sais (et un rapide Google semble confirmer), à la fois le format TIFF et les spécifications du DOC au format binaire sont disponibles gratuitement sur le web. Par conséquent, et ce serait un projet assez grand et complexe (je pense à des mois d'homme plutôt qu'à des semaines d'homme), vous pourriez écrire du code pour lire le document DOC et peupler un modèle d'objet. Vous pouvez alors écrire plus de code pour ensuite sortir le modèle objet en tant que document TIFF. Mais, pensez à certaines des complexités: tables, formatage, jeux de caractères, espacement, contenu incorporé, etc. Eek! Je suppose que c'est la raison pour laquelle c'est normalement le travail de bibliothèques tierces coûteuses ou de systèmes de gestion de documents professionnels. Par intérêt, pourrait-il être temps de s'éloigner des formats de documents propriétaires et de stocker le document dans la base de données comme quelque chose de plus gérable?

0

Microsoft Office Document Image Writer est toujours disponible dans Office 2007 (au moins avec Enterprise) - c'est un composant facultatif.

1

Vous pouvez convertir un document Word en TIFF par programmation en utilisant le pilote "Fax" standard fourni avec Microsoft Windows. La clé de ce travail est d'assurer la OutputFileName a une extension de « .tiff » Voici l'exemple de code (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