Re: PDF aus Anwendung drucken (silent)
Von: Sascha Adams (spam.adams@intermed-service.de) [Profil]
Datum: 31.10.2007 16:14
Message-ID: <fga649$f39$01$1@news.t-online.com>
Newsgroup: de.comp.lang.delphi.misc
Datum: 31.10.2007 16:14
Message-ID: <fga649$f39$01$1@news.t-online.com>
Newsgroup: de.comp.lang.delphi.misc
Marian Aldenhövel wrote: > Hi, > > > Ja, die Idee hatte ich auch schon, aber ich bekomme vom Reader keine > > Meldung wann er fertig ist. > > Ich weiß nicht, wie's der Acrobat Reader macht. Aber wenn Du eine > Kommandozeile austüfteln kannst, die ein einzelnes Dokument druckt, > wenn da also nicht DDE und wasweißichalles beteiligt ist, dann > probierst Du statt ShellExecute CreateProzess. > > Dem gibst Du neben Deiner Kommandozeile eine PROCESS_INFORMATION mit. > Nach erfolgreichem Start findest Du darin ein hProcess. Auf das kannst > Du mit WaitForSingleObject warten. Oder mit GetExitCodeProcess pollen. > > Wenn der Prozess fertig ist, dürfte der Druckauftrag nicht mehr vom > Reader versehentlich oder absichtlich kaputt zu kriegen sein. > > Solche Start-und-Warte-Aktionen kann man in manchen Bibliotheken > finden. Ich bin fast sicher, daß die JCL so was hat. > > Ciao, MM Ok, ich habe jetzt ein Lösung die funktioniert. Es gibt zwar keine Kommandozeile, die tut, was man erwartet und man bekommt keine sinnvolle Rückmeldung, aber der Hinweis auf die JCL hat indirekt geholfen. Also Kommandozeile verwende ich '"Arcobatpfad\Acrobatexe" /t "PDFPfad\PDFname" \\printserver\printername'. Gemäß älteren Internetinfos soll diese Kommandozeile das Dokument drucken und danach den Reader terminaten. Das funzt so leider nicht. Nun nehme ich die JCLCreateProcess Komponente und setze dort die Eigenschaften wie folgt: Creationflags - > cfnewconsole : True StartupInfo -> DefaultWindow : False StartupInfo -> Deskatop : 2 StartupInfo -> ShowWindow : swhide WaitforTerminate : False Das bewirkt, daß der Acrobat für jeden Process neu gestartet wird und auf einem virtuellen Desktop landet, damit die Taskbar nicht verschmutzt wird. Der lustige Teil dabei ist dann, daß bei allen Prozessen außer dem ersten der Teil mit dem Terminate dann plötzlich funktioniert. Es bleibt also nur der erste so erstellte Prozeß im Speicher hängen und muß von Hand bereinigt werden, wenn das Programm beendet wird. (Diesen Teil muß ich noch realisieren.) Damit kann ich jetzt also wunderbar beliebig viele PDFs mit dem Reader drucken, was dann endlich jedwede Formatprobleme ad acta legen sollte. Mag sein, daß es nicht die effizienteste Art ist, aber es ist ein Lösung die funktioniert. Ich hoffe diese Ausführungen helfen dem einen oder anderen da draussen. mfg Sascha Adams[ Auf dieses Posting antworten ]
Antworten
- Sascha Adams (01.11.2007 11:38)
