Adobe macht es dem Programmierer nicht sehr einfach, still und heimlich ein PDF-Dokument auszudrucken. Zwar läßt sich der Acrobat Reader per Kommandozeile ansteuern, jedoch wird er am Ende des Druckvorgangs das Fenster offen lassen, und so eine Interaktion des Benutzers notwendig machen.
Es gibt nun also 3 Möglichkeiten:
1) statt dem Reader eine kostenpflichtige Ersatzkomponente verwenden.
2) statt Acrobat Reader wird Foxit benutzt. Dieses akzeptiert Befehle über die Kommandozeile UND beendet sich nach dem Druck.
Bsp: “c:\…\Foxit Reader.exe” /p “D:\PDF\ContactUpdater.pdf”
3) Acrobat Reader via DDE ansprechen. DDE = Dynamic Data Exchange.
Zwar wird DDE vom .NET Framework nicht per default unterstützt, jedoch gibt es eine Open-Source Library namens NDde von codeplex.
Der Reader unterstützt folgende DDE Befehle:
CloseAllDocs, DocClose, DocGoTo, DocGoToNameDest, DocOpen, FileOpenEx, FilePrintEx, FilePrintSilentEx, FilePrintToEx, and AppExit
Eine C#-Klasse, die via NDde ein PDF Dokument zum Standarddrucker sendet, gibt es hier: LL.PDFPrint
Wichtig: erste Tests ergaben, daß dieses erst ab Versionen 7.0 funktioniert. Bei Version 6.0 wird nur die Applikation geöffnet, sie scheint aber keine DDE-Befehle anzunehmen.
coooool