Delphi-PRAXiS
Seite 5 von 5   « Erste     345   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Drucken mit gleichzeitigem generieren eines PDFs (https://www.delphipraxis.net/203511-drucken-mit-gleichzeitigem-generieren-eines-pdfs.html)

oakley 8. Mär 2022 22:20

AW: Drucken mit gleichzeitigem generieren eines PDFs
 
Hallo zusammen,

ich möchte nur kurz sagen, wie ich das Ganze bis jetzt gemacht habe:

Hiermit schreibe ich die PS Datei

Delphi-Quellcode:
  XStream := TMemoryStream.Create;
  StdIn := THandleStream.Create(GetStdHandle(STD_INPUT_HANDLE));
  StdIn.Seek(0,0);
  repeat
    BytesRead := StdIn.Read(Buffer,1024);
    if BytesRead > 0 then
      XStream.WriteBuffer(Buffer,BytesRead);
   until BytesRead <= 0;

  //exportdir = Dir to export files
  FStream := TFileStream.Create(exportdir + 'xy.ps', fmCreate);
  XStream.Position := 0;
  if FStream.CopyFrom(XStream, XStream.Size) > 0 then
  begin
    FStream.Free;
    XStream.Free;
    try
      try
        oGS := TGhostScript.Create;
        oGS.ExecuteWithArgs(GetArgs);
      finally
        FreeAndNil(oGS);
      end;
    except
      on E: TExceptionGS do
      begin
      end;
    end;
Die Funtion ExecuteWithArgs(GetArgs) führt die Konvertierung zum PDF mit Ghostscript aus:

Delphi-Quellcode:
function TForm1.GetArgs(): APAnsiChar;
var
  oArgs: APAnsiChar;
begin
    setlength(oArgs, 0);
    AddArg(oArgs, 'gs');
    AddArg(oArgs, '-r300');
    AddArg(oArgs, '-dNOSAFER');
    AddArg(oArgs, '-dBATCH');
    AddArg(oArgs, '-dNOPAUSE');
    AddArg(oArgs, '-sDEVICE=pdfwrite');
    AddArg(oArgs, '-dPDFSETTINGS=/ebook');
    AddArg(oArgs, '-sFONTPATH=%windir%/fonts');
    AddArg(oArgs, '-dEmbedAllFonts=true');
    AddArg(oArgs, '-dSubsetFonts=true');
    AddArg(oArgs, '-dNumRenderingThreads=8');
    AddArg(oArgs, '-sOutputFile=' + exportdir + filename);
    AddArg(oArgs, '-f');
    AddArg(oArgs, exportdir + 'xy.ps');
    result := oArgs;
end;
Ich rufe oGS.ExecuteWithArgs(GetArgs2) nochmal mit anderen Parametern auf um die Ausgabe zum Drucker um zu leiten.

Delphi-Quellcode:
function TForm1.GetArgs2(): APAnsiChar;
var
  oArgs: APAnsiChar;
begin
    setlength(oArgs, 0);
    AddArg(oArgs, 'gs');
    AddArg(oArgs, '-dBATCH');
    AddArg(oArgs, '-dNOPAUSE');
    AddArg(oArgs, '-dNOSAFER');
    AddArg(oArgs, '-sDEVICE=mswinpr2');
    AddArg(oArgs, '-sOutputFile=%printer%TESTPS');
    AddArg(oArgs, exportdir + 'xy.ps');
    result := oArgs;
end;
Hier wird ein Test-Drucker namens TESTPS angesteuert.
Soweit funktioniert alles.

LG

Mirko


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:51 Uhr.
Seite 5 von 5   « Erste     345   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz