AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PDF-Dateien drucken (viele)

Ein Thema von rokli · begonnen am 16. Nov 2022 · letzter Beitrag vom 28. Nov 2022
Antwort Antwort
itblumi

Registriert seit: 28. Mär 2009
73 Beiträge
 
Delphi XE6 Professional
 
#1

AW: PDF-Dateien drucken (viele)

  Alt 18. Nov 2022, 12:48
So ist es bei mir im XE6, ich hoffe das es sich nicht geändert hat.

Projekt -> Optionen -> Delphi-Compiler

Dann das Ziel: Alle Konfigurationen - Alle Plattformen

Da dürfte dann eine Zeile mit dem "Suchpfad" stehen und dort den Pfad zur Lib eingeben.
Du kannst natürlich auch die Dateien direkt einbinden, dass sollte keinen Unterschied machen.
Jan
Ein neuer Tag bringt so einiges mit sich. Was auch immer es ist, es bleibt ein kleines Abenteuer.

Geändert von itblumi (18. Nov 2022 um 12:50 Uhr)
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
302 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: PDF-Dateien drucken (viele)

  Alt 18. Nov 2022, 14:18
Hallo alle zusammen!

Die Software von Jan läuft sehr gut.

Mein Fehler in der ersten Version wahr wohl tastächlich, dass ich die Dateinamen in einerm Array zur Verfügung gestellt habe. Es hätte aber wohl eine Semikolon separierte CSV Datei sein sollen, die dann als Input Liste dem AConverter.ToPdf zur Verfügung gestellt werden muss.

Zum Nachvollziehen die beiden wesentlichen Proceduren:

Delphi-Quellcode:
procedure TfrmGsTst.Button1Click(Sender: TObject);
var
  AConverter: TGS_PdfConverter;
  AFiles: string;
begin

   M_Output.Clear;

   sQuelle      := 'C:\Temp\pdffen\quell\';
   sZiel         := 'C:\Temp\pdffen\';
   sDll         := 'C:\Temp\pdffen\';

  AConverter := TGS_PdfConverter.Create(sDll);
  FLogFile := TStringList.Create;
  try
    try
      AConverter.OnStdOut := Log; // komplette Debug Ausgabe
      AConverter.OnStdError := Log;
      {$IFDEF DEBUG}
      AConverter.Debug := True; // Das kannst du später entfernen
      {$ENDIF}
      AFiles :=   sQuelle + '0174163013.pdf;' +
                  sQuelle + '0174163020.pdf;' +
                  sQuelle + '0174164010.pdf;' +
                  sQuelle + '0174164027.pdf;' +
                  sQuelle + '0174164034.pdf;' +
                  sQuelle + '0174164041.pdf;' +
                  sQuelle + '0174164065.pdf;' +
                  sQuelle + '0174164072.pdf;' +
                  sQuelle + '0174164089.pdf;' +
                  sQuelle + '0174164096.pdf;' +
                  sQuelle + '0174164119.pdf;' +
                  sQuelle + '0174165024.pdf;' +
                  sQuelle + '0174165031.pdf;' +
                  sQuelle + '0174165048.pdf;' +
                  sQuelle + '0174165055.pdf;' +
                  sQuelle + '0174165062.pdf;' +
                  sQuelle + '0174166014.pdf;' +
                  sQuelle + '0174167011.pdf;' +
                  sQuelle + '0174167028.pdf;' +
                  sQuelle + '0174167035.pdf;' +
                  sQuelle + '0174167042.pdf;' +
                  sQuelle + '0174167059.pdf;' +
                  sQuelle + '0174167066.pdf;' +
                  sQuelle + '0174167073.pdf;' +
                  sQuelle + '0174167080.pdf;' +
                  sQuelle + '0174167097.pdf;' +
                  sQuelle + '0174167103.pdf;' +
                  sQuelle + '0174167110.pdf;' +
                  sQuelle + '0174167127.pdf;' +
                  sQuelle + '0174167134.pdf;' +
                  sQuelle + '0174167141.pdf;' +
                  sQuelle + '0174167158.pdf;' +
                  sQuelle + '0174168018.pdf;' +
                  sQuelle + '0174168025.pdf;' +
                  sQuelle + '0174168032.pdf;' +
                  sQuelle + '0174169015.pdf;' +
                  sQuelle + '0174170011.pdf';

      if (not AConverter.ToPdf(AFiles.Split([';']), sZiel + 'New01.pdf', False)) then
      begin
        ShowMessage('Fehler: ' + AConverter.LastErrors);
        FLogFile.SaveToFile(sZiel + 'output.log');
      end else
        ShowMessage('Convertierung abgeschlossen!');

    except
      on E: Exception do
        ShowMessage('Fehler: ' + E.Message);
    end;
  finally
    FreeAndNil(AConverter);
    FreeAndNil(FLogFile);
  end;
end;

procedure TfrmGsTst.Log(const AStr: string);
begin
  (* hier bekommst du die gefilterten informationen + debug information *)

  // als output in einem Memo
  M_Output.Lines.Text := M_Output.Lines.Text + AStr;
  // als output in eine Datei
  FLogFile.Text := FLogFile.Text + AStr;
  // scroll down
  M_Output.SelStart := Length(M_Output.Lines.Text);
  M_Output.SelLength := 0;
end;
Meinen besondereren Dank and Jan, der sich viel Mühe mit mir gegeben hat.

Allen ein schönes Wochenende

Beste Grüße
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.553 Beiträge
 
Delphi 12 Athens
 
#3

AW: PDF-Dateien drucken (viele)

  Alt 18. Nov 2022, 14:32
Statt der vielen sQuelle hätte ich ein Zeichen (z.B. *) und dann Replace gemacht,
aber wozu erst zusammen und dann split, wenn man es auch gleich fertig haben kann.

Delphi-Quellcode:
  AFiles: TArray<string>;
begin

      AFiles := [sQuelle + '0174163013.pdf',
                 sQuelle + '0174163020.pdf',
                 sQuelle + '0174164010.pdf',
                 sQuelle + '0174164027.pdf',
                 sQuelle + '0174164034.pdf',
                 ...
                ];
oder falls später stückchenweise, via Schleife und so.
Delphi-Quellcode:
      AFiles := AFiles + [sQuelle + '0174163013.pdf'];
      ...
      AFiles := AFiles + [sQuelle + '0174163020.pdf', sQuelle + '0174164010.pdf'];
      ...

Delphi-Quellcode:
M_Output.Lines.Add(AStr); // geht auch mit Zeilenumbrüchen drin (und auch unnötig erst ALLEN Text rauszuholen und wieder neu reinzuzun)
// und SelStart ist auch nicht nötig, weil macht Add schon
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (18. Nov 2022 um 14:36 Uhr)
  Mit Zitat antworten Zitat
itblumi

Registriert seit: 28. Mär 2009
73 Beiträge
 
Delphi XE6 Professional
 
#4

AW: PDF-Dateien drucken (viele)

  Alt 18. Nov 2022, 14:41
Delphi-Quellcode:
M_Output.Lines.Add(AStr); // geht auch mit Zeilenumbrüchen drin (und auch unnötig erst ALLEN Text rauszuholen und wieder neu reinzuzun)
// und SelStart ist auch nicht nötig, weil macht Add schon
Das ist richtig, aber leider liefert Ghostscript auch manchmal nur ein Stück von einer Zeile und dann ist die Ausgabe mehrfach unterteilt.
Deswegen ist das Ganze über die Text property gelöst.

Edit: Das einzige was ich noch dagegen machen könnte um dies benutzerfreundlich zu gestalten, wäre einen internen Text Puffer zu verwenden und nur ganze Zeilen auszugeben. Das werde ich mir gleich mal auf meine ToDo Liste schreiben.
Jan
Ein neuer Tag bringt so einiges mit sich. Was auch immer es ist, es bleibt ein kleines Abenteuer.

Geändert von itblumi (18. Nov 2022 um 14:47 Uhr)
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
302 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: PDF-Dateien drucken (viele)

  Alt 28. Nov 2022, 06:17
Hallo Zusammen!

Die Lösung von itblumi läuft sehr gut!

Was nicht funktionierte, war die Angabe eines UNC-Pfades für den Quell-Ort der zusammen zu fassenden PDF-Dokumente. Aber über ein gemapptes Laufwerk kein Problem.

Insgesamt ist das eine gute, auch sehr perfomante Lösung für unser Druckproblem.

Beste Grüße
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz