AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Drucken mit gleichzeitigem generieren eines PDFs

Drucken mit gleichzeitigem generieren eines PDFs

Ein Thema von oakley · begonnen am 25. Feb 2020 · letzter Beitrag vom 8. Mär 2022
Antwort Antwort
Seite 5 von 5   « Erste     345
oakley

Registriert seit: 15. Aug 2005
251 Beiträge
 
#41

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 8. Mär 2022, 23:20
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf