Introduction
I feel I need to share this pain. I have been struggling for days now to get something simple to work for me. That is to print out a Word document (RTF format) to a printer using Word. It also has to work with multiple versions of Word (so far 2000 and 2003). I thought I would share everything that I have learnt.
If you want this to work for multiple versions, install the earliest version of Word and Add Reference to its COM component and develop against these.
Next to the code...
The Code
Word.ApplicationClass ac = new Word.ApplicationClass();
Word.Application app = ac.Application;
app.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone;
object filename = "myFile.rtf";
object missingValue = Type.Type.Missing;
Word.Document document = app.Documents.OpenOld(ref filename,
ref missingValue, ref missingValue,
ref missingValue, ref missingValue, ref missingValue,
ref missingValue, ref missingValue, ref missingValue, ref missingValue);
app.ActivePrinter = "My Printer Name";
object myTrue = true;
object myFalse = false;
m_App.ActiveDocument.PrintOutOld(ref myTrue,
ref myFalse, ref missingValue, ref missingValue, ref missingValue,
missingValue, ref missingValue,
ref missingValue, ref missingValue, ref missingValue, ref myFalse,
ref missingValue, ref missingValue, ref m_MissingValue);
document.Close(ref missingValue, ref missingValue, ref missingValue);
while(m_App.BackgroundPrintingStatus > 0)
{
System.Threading.Thread.Sleep(250);
}
app.Quitref missingValue, ref missingValue, ref missingValue);
I do not claim that this is perfect, but it's as good as I can get. It works on my machine anyway.
History
- 15th July, 2005: Initial post