| 

.NET C# Java Javascript Exception

2
Hallo zusammen

Absicht:
Eine Wordvorlage (dotx) soll als Dokument geöffenet, die Bookmarks abgefüllt und das Dokument gedruckt werden.

Meine Entwicklungsumgebung:
WindowsServer 2008 Enterprise SP2 (32 Bit)
VisualStudio 2008
Office 2007 SP3 (12.0.6612.1000)

Relevanter Code:
Im Projekt gibt es einen Verweis auf Microsoft.Office.Interop.Word Version 12

Dim app As New Microsoft.Office.Interop.Word.Application()
Dim doc As Microsoft.Office.Interop.Word.Document = Nothing
app.Visible = False
doc = app.Documents.Add(dotPath)
For Each item As KeyValuePair(Of String, String) In bookmarks
doc.Bookmarks.Item(item.Key).Range.Text = item.Value
Next

doc.PrintOut()
doc.Close(False)
app.Quit(False)


Funktionier wie gewünscht, auch wenn ich die EXE ausserhalb der Entwicklungsumgebung ausführe.

Aber auf den Arbeitsstationen der Benutzer ist das Verhalten so:
Das Programm funktioniert ohne Fehler, aber es wird kein Papier ausgedruckt.
In der Warteschlange des Druckers wird das Dokument für 1 bis 2 Sek angezeigt, verschwindet dann ohne Fehler und unten rechts wird kurz ein Fenster angezeigt mit "Auftrag wurde an den Drucker gesendent". Was fehlt ist die normalerweise erscheinende Sprechblase über dem Druckersymbol "Dokument wurde an den Drucker gesendet". Der Drucker ist im Bereit-Status, es stehen auch da keine Aufträge an.

Getestet auf zwei Clients mit demselben Verhalten.
Einer mit
Windows XP Professional SP3
Office 2007 SP3 (12.0.6612.1000)
VisualStudio 2005
VisualStudio 2010

der andere
Windows XP Professional SP3
Office 2007 SP3 (12.0.6612.1000)

Habe dann
1. Microsoft.Office.Interop.Word.dll in das Ausführungsverzeichnis kopiert
2. Die PrimaryInteropAssembly für Office 2007 installiert

Beide Massnahmen ohne erfolg.
Was habe ich nicht beachtet?
Was fehlt?

Vielen Dank und Gruss
Andreas
22.12.2011
Andreas Schädler 117 1 6
1 Antwort
1
Hi,

Vielleicht ist Dein Programm so schnell zu Ende, dass die PrintOut-Methode nicht fertig wird die Daten an den Spooler zu senden. Bei dem PrintOut gibt es einen Parameter, das die Methode synchron verarbeitet werden soll. Probier das mal aus.

Gruß,
22.12.2011
LutzJ 1,3k 1 8
Hallo
Das scheint tatsächlich das Problem zu sein. Währe ich nie drauf gekommen.
Habe den richtigen Parameter auf die schnelle noch nicht gefunden und mal zum Testen ein Sleep von ein paar Sekunden eingefügt und das funktioniert.
Vielen Dank für Deine Hilfe und Gruss
Andreas
Andreas Schädler 22.12.2011
1
Ich glaube, Lutz meint
doc.PrintOut(Background:false);
Matthias Hlawatsch 22.12.2011
Danke Matthias, mit diesem Parameter funktiniert der Druck.
Andreas Schädler 27.12.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH