Einzelnen Beitrag anzeigen

peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
709 Beiträge
 
Delphi 12 Athens
 
#10

AW: Externes Programm

  Alt 24. Jan 2025, 12:57
Hallo,
danke für die Antworten.
Das erstellen des PDF klappt einwandfrei.
Nach dem Erstellen startet das Externe Programm.
Ich möchte erreichen, wenn ich dort 'Speichern unter...' drücke, vorher der richtige Pfad zum speichern des PDF eingestellt ist.
Wie kann ich das Problem lösen ???
Gruss Oldmann
Ich habe da ein uraltes Kodefragment gefunden, das zeigt, wie man für einen Druckjob einen Dateinamen für print to file setzen kann. Vielleicht funktioniert das ja auch für den von dir verwendeten PDF-Drucker.
ACHTUNG! Der Kode ist uralt und für eine nicht Unicode-fähige Delphi Version. Braucht also eventuell Anpassungen.
Delphi-Quellcode:
Print to file:

uses printers;

Procedure StartPrintToFile( filename: String );
var
  CTitle: array[0..31] of Char;
  DocInfo: TDocInfo;
begin
  With Printer Do Begin
    BeginDoc;
    { Abort job just started on API level. }
    EndPage( Canvas.handle );
    Windows.AbortDoc( Canvas.handle );

    { Restart it with a print file as destination. }
    StrPLCopy(CTitle, Title, SizeOf(CTitle) - 1);
    FillChar(DocInfo, SizeOf(DocInfo), 0);
    with DocInfo do
    begin
      cbSize := SizeOf(DocInfo);
      lpszDocName := CTitle;
      lpszOutput := PChar(filename);
    end;
    StartDoc(Canvas.handle, DocInfo);
    StartPage(Canvas.handle);
  End;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  StartPrintToFile('C:\temp\temp.prn');
  try
    Printer.Canvas.TextOut( 100, 100, 'Hello World.' );
  finally
    Printer.endDoc;
  end;
end;
Der Kode wiederholt praktisch einen Teil von BeginDoc, um in der Lage zu
sein, lpszOutput auf den Dateinamen der zu erzeugenden Datei zu setzen.
Peter Below
  Mit Zitat antworten Zitat