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
Seite 1 von 2  1 2      
BerndS
Online

Registriert seit: 8. Mär 2006
Ort: Jüterbog
498 Beiträge
 
Delphi 12 Athens
 
#1

AW: PDF-Dateien drucken (viele)

  Alt 16. Nov 2022, 14:43
Ein weiters Tool, das man selber mitgeben kann/muss wäre SumatraPDF
Das ist kostenlos und wurde hier mal von Holger Klemt (IBExperts) empfohlen.
  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 17. Nov 2022, 06:07
Moin,

als erstes mal herzlichen Dank an alle, die sich Gedanken gemacht haben!

Dann zu den Fragen, ob das wirklich gedruckt werden muss: Es handelt sich um Kundenbelege, mit denen als erstes Waren im Lager kommissioniert werden und die dann den Waren als Begleitpapiere beigelegt werden.

Das Mergen von PDF Dokumenten erscheint mir hier im Moment auch die beste Lösung zu werden.

Ich teste mal noch ein bisschen und stelle meine Lösung dann hier ein.

Danke.
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 Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: PDF-Dateien drucken (viele)

  Alt 17. Nov 2022, 06:45
Auch wenn der initiale Overhead relativ hoch ist:
https://pdfbox.apache.org/2.0/commandline.html
Kann Mergen und Drucken (über Kommandozeile)
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
698 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: PDF-Dateien drucken (viele)

  Alt 17. Nov 2022, 09:28
Ich nutze DevExpress und den TdxComponentPrinter, wenn es vom SPeicher her überschaubar ist, tausende PDFs gehen da in einem 32-bit Programm nicht.
Wenn es unbekannt viele sind, dann lasse ich mir die Seiten als Bilder geben und male sie selbst auf den Printer.Canvas. Ich brauche die allerdings auch als einen grossen Druckjob.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: PDF-Dateien drucken (viele)

  Alt 17. Nov 2022, 09:44
Statt PDF als PostScript speichern?
"Gute" Drucker verstehen das direkt.

COPY abc.ps \\servername\printername aber sollte wohl auch im Delphi über CopyFile oder TStream funktionieren, ohne ein Zusatzprogramm dazwischen.
Vielleicht sogar COPY abc.ps LPT1 oder eben \\localhost\printername
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (17. Nov 2022 um 09:47 Uhr)
  Mit Zitat antworten Zitat
itblumi

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

AW: PDF-Dateien drucken (viele)

  Alt 17. Nov 2022, 12:35
Hi rokli,

schau mal in den folgenden Eigenschaften was er dir dort ausgibt, wenn keine Datei erstellt wird dann dürfte ein Fehler aufgetreten sein.
Delphi-Quellcode:
AConverter.Debug := True;
// string liste mit dem was er macht
AConverter.StdOut

// errors als strings sollte eigentlich leer sein
AConverter.LastErrors
// error code -> dieser sollte 0 sein falls alles funktioniert hat
AConverter.LastErrorCode
Jan
Ein neuer Tag bringt so einiges mit sich. Was auch immer es ist, es bleibt ein kleines Abenteuer.
  Mit Zitat antworten Zitat
itblumi

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

AW: PDF-Dateien drucken (viele)

  Alt 17. Nov 2022, 12:46
AConverter.ToPdf gibt dir auch eine Boolean Ausdruck zurück dieser sollte den Fehlercode (LastErrorCode) vor dem beenden der Prozedur prüfen.

Habe Dir das Ganze etwas anschaulicher zusammen gestellt.

Delphi-Quellcode:
procedure TfrmMain.Button2Click(Sender: TObject);
var
   AConverter : TGS_Pdfconverter;
   aFiles : Array[0..9] of String;
   sQuellPfad : String;
   sZielPfad : String;
begin
   sQuellPfad := 'C:\Temp\pdffen\quell\';
   sZielPfad := 'C:\Temp\pdffen\';

   aFiles[1] := sQuellPfad + '0174163013.pdf';
   aFiles[2] := sQuellPfad + '0174163020.pdf';
   aFiles[3] := sQuellPfad + '0174164010.pdf';
   aFiles[4] := sQuellPfad + '0174164027.pdf';
   aFiles[5] := sQuellPfad + '0174164034.pdf';
   aFiles[6] := sQuellPfad + '0174164041.pdf';
   aFiles[7] := sQuellPfad + '0174164065.pdf';
   aFiles[8] := sQuellPfad + '0174164072.pdf';
   aFiles[9] := sQuellPfad + '0174164089.pdf';

   AConverter := TGS_PdfConverter.Create(sZielPfad);
   AConverter.Params.NoSaver := True;
   AConverter.Debug := True; // debug Ausgabe der Bibliothek aktivieren


   if (AConverter.ToPdf(aFiles, sZielPfad + 'new.pdf', false)) then
     ShowMessage('fertig')
   else begin
     ShowMessage('Fehler: ' + AConverter.LastErrors);
     AConverter.StdOut.SaveToFile(sZielPfad + 'output.log'); // Die Prozess Ausgabe speichern
   end;

   FreeAndNil(AConverter);
Edit: Es kann auch sein das Ghostscript versucht zu ermitteln ob er Schreibrechte in dem Verzeichnis besitzt, dass kann mit unter schief gehen. Dies kannst du mit NOSAVER unterdrücken. Ich habe das noch zusätzlich hinzugefügt im obigen Code.
Jan
Ein neuer Tag bringt so einiges mit sich. Was auch immer es ist, es bleibt ein kleines Abenteuer.

Geändert von itblumi (17. Nov 2022 um 13:05 Uhr)
  Mit Zitat antworten Zitat
itblumi

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

AW: PDF-Dateien drucken (viele)

  Alt 17. Nov 2022, 13:27
Statt PDF als PostScript speichern?
"Gute" Drucker verstehen das direkt.

COPY abc.ps \\servername\printername aber sollte wohl auch im Delphi über CopyFile oder TStream funktionieren, ohne ein Zusatzprogramm dazwischen.
Vielleicht sogar COPY abc.ps LPT1 oder eben \\localhost\printername
Ghostscript kann auch direkt drucken nach dem er die Dateien zusammen gestellt hat, leider ist das noch nicht mit dem derzeitigen Converter möglich. Ich bin gerade dabei eine dementsprechende Version dafür auch bereit zu stellen. Da mich das Thema interessiert hat und dies ja auch ein häufiger Anwendungsfall sein kann. Das OutputFile ist dann der Drucker mit dem Prefix (%printer%).
Jan
Ein neuer Tag bringt so einiges mit sich. Was auch immer es ist, es bleibt ein kleines Abenteuer.
  Mit Zitat antworten Zitat
rokli

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

AW: PDF-Dateien drucken (viele)

  Alt 17. Nov 2022, 09:43
Hi ItBlumi,

habe mir Deine Lösung angesehen und heruntergeladen. Dein beigefügte Testprogramm läuft auch.
Dann habe ich, als ersten Test, das folgende Programm geschrieben:

Delphi-Quellcode:
procedure TfrmMain.Button2Click(Sender: TObject);
var
   AConverter   : TGS_Pdfconverter;
   aFiles       : Array[0..9] of String;
   sQuellPfad   : String;
   sZielPfad   : String;
begin
   sQuellPfad   := 'C:\Temp\pdffen\quell\';
   sZielPfad   := 'C:\Temp\pdffen\';

   aFiles[1]   := sQuellPfad + '0174163013.pdf';
   aFiles[2]   := sQuellPfad + '0174163020.pdf';
   aFiles[3]   := sQuellPfad + '0174164010.pdf';
   aFiles[4]   := sQuellPfad + '0174164027.pdf';
   aFiles[5]   := sQuellPfad + '0174164034.pdf';
   aFiles[6]   := sQuellPfad + '0174164041.pdf';
   aFiles[7]   := sQuellPfad + '0174164065.pdf';
   aFiles[8]   := sQuellPfad + '0174164072.pdf';
   aFiles[9]   := sQuellPfad + '0174164089.pdf';

   AConverter := TGS_PdfConverter.Create(sZielPfad);
   Aconverter.ToPdf(aFiles, sZielPfad + 'new.pdf', false);
   FreeAndNil(AConverter);

   ShowMessage('fertig');
end;
Es läuft komplett, ohne Fehlermeldungen durch, tut aber leider nicht was es soll.
Ich habe versucht in der GS_Converter nachzusehen, was da gemacht wird, verstehe aber nicht alles und komme daher nicht wirklich weiter.

Würdest Du da einmal draufschauen?

Danke.
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
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
637 Beiträge
 
Delphi XE6 Enterprise
 
#10

AW: PDF-Dateien drucken (viele)

  Alt 17. Nov 2022, 15:00
Auch wenn der initiale Overhead relativ hoch ist:
https://pdfbox.apache.org/2.0/commandline.html
Kann Mergen und Drucken (über Kommandozeile)
Mergen über Kommandozeile geht auch mit pdftk:
Code:
pdftk datei1.pdf datei2.pdf ... dateix.pdf cat output gesamt.pdf
(und vieles vieles mehr...)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:57 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