Einzelnen Beitrag anzeigen

Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: PDF Printer Name vom Ausgabefile

  Alt 11. Mai 2021, 14:59
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;
Michael Gasser

Geändert von Michael II (11. Mai 2021 um 15:05 Uhr)
  Mit Zitat antworten Zitat