Welches Problem habe ich konkret.
Ich habe eine Funktion mit der Bilder an den Drucker ausgeben will.
Wenn ich den Drucken mit Printer.BeginDoc starte, meldet sich der Dialog meines Standarddrucker.
In diesem Fall ist es Microsoft Print to PDF.
Wie bekomme ich zum einen den Pad und den Dateinamen wo die Druckausgabe hin gehen schon voreingestellt und
wie bekomme ich im Nachgang den Pfad und den Dateinamen ausgelesen.
So wie es aussieht, scheint Windows sich das ja zu merken, denn wenn ich das nächste Mal den Dialog aufrufe, stehen da ja die letzten Einstellungen. Auf welche Variablen muss ich da zu greifen???.
Wenn ich dich richtig verstehe, willst du Bilder als PDF drucken und dabei direkt in deinem Programm den Filenamen des PDFs und den Drucker festlegen ohne dass der Benutzer Dialoge (Drucker/Speichern) angezeigt erhält.
Das Beispiel von
stackoverflow (Code unten rein kopiert, damit dieser nicht verloren geht, wenn stackoverflow eingestellt werden sollte) hilft dir nicht?
Drucker festlegen, Zielfile festlegen und dann mit Begindoc loslegen...(Code unten)
Bei meinem Windows 10.0.19043.964 wird so kein Dialog angezeigt - und das Speichern funktioniert.
Delphi-Quellcode:
procedure TForm89.Button1Click(Sender: TObject);
var
PrtIndex : Integer;
DeviceMode : THandle;
Device,
Driver,
Port :
array [0..255]
of Char;
begin
// Warning: The printer name is case sensitive
PrtIndex := Printer.Printers.IndexOf('
Microsoft Print to PDF');
if PrtIndex < 0
then
raise Exception.Create('
Printer not found');
Printer.PrinterIndex := PrtIndex;
Printer.GetPrinter(Device, Driver, Port, DeviceMode);
Printer.SetPrinter(Device, Driver, '
C:\Users\micha\Desktop\TestPrintToPdf.pdf', 0);
Printer.BeginDoc;
Printer.Canvas.TextOut(100, 100, '
Hallo delphipraxis.net');
Printer.EndDoc;
end;