Fragen zum Drucken, auch mit TPrinter

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
ErnstVolker
Beiträge: 336
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Fragen zum Drucken, auch mit TPrinter

Beitrag von ErnstVolker »

Guten Abend,

da ich mir heute mit einer namhaften amerikanischen Internet-Suchmaschine einen abgesucht habe möchte ich hier doch noch mal fragen:

Ich habe mit PowerPDF ein PDF erzeugt und gespeichert. Jetzt möchte ich nach der Erstellung das PDF auch auf Papier drucken. Ich habe verzweifelt danach gesucht wie man an TPrinter den Pfad zu der zu druckenden PDF-Datei übergeben kann.

Ich bin dann darauf gekommen, dass mit:

Code: Alles auswählen

Shellexecute (handle,'print','test.pdf',nil,SW_SHOWNORMAL);
die Datei auf dem Windows-Standartdrucker ausgedruckt werden kann.

Gibt es TPrinter nicht her, eine bereits existierende (PDF-)Datei -könnte ja auch Word sein- zu drucken?

Dann habe ich vor "ShellExecute" mit Printer.Printers.SetPrinter('Druckername') versucht den Drucker zu wechseln. Das führte aber nicht zum Erfolg, die Ausgabe mit ShellExecute erfolgte auf dem Standarddrucker.

Diesen zu wechseln, bin ich hier:

https://www.delphi-treff.de/tipps-trick ... er-setzen/

und hier:

https://www.swissdelphicenter.ch/de/showcode.php?id=660

zwar fündig geworden, habe es aber noch nicht ausprobiert.

Deshalb hier meine Frage ob das wirklich so "umständlich" ist?

Einen schönen Abend
Volker

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6216
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Fragen zum Drucken, auch mit TPrinter

Beitrag von af0815 »

ErnstVolker hat geschrieben:
Mo 8. Jan 2024, 20:47
Deshalb hier meine Frage ob das wirklich so "umständlich" ist?
Mit ShellExecute gibst du die Kontrolle an ein "fremdes Programm/Prozess" dieser kümmert sich nicht um das was du eingestellt hast, sondern das was aktuell im System konfiguriert ist. Daher, du drehst "quasi lokal" den Drucker auf eine andere Type, das andere Programm wird vom System von deinen Änderungen isoliert und bekommt seine eigene Druckerumgebung. Das ist genau der Effekt den du beobachtet. Willst du es anders, so musst du es entweder dem Programm mitteilen können (zB. über Kommandozeilenparameter) oder den default Drucker vom System ändern lassen, das ist natürlich mit Aufwand verbunden (und würde mich dazu verleiten das Programm sofort in die Tonne zu treten, wenn es an meinen Einstellungen ungefragt herumpfuscht)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten