Einzelnen Beitrag anzeigen

niko022

Registriert seit: 2. Okt 2007
46 Beiträge
 
#1

Liste von Dokumenten (doc, pdf) drucken

  Alt 5. Dez 2007, 13:27
Hallo,
ich hätte eine Frage zum drucken von Dokumeten aus Delphi heraus.

Ich habe zu dem Thema schon einige Sachen gefunden und auch ausprobiert, bin aber noch nicht auf die richtige Variante gestoßen die ich für meinen Fall nutzen kann.

Mein Problem:

Ich habe über Delphi ein Array aufgefüllt in dem Pfade + Filenamen zu Dokumenten abgelegt sind.
z.B.
Delphi-Quellcode:

 C:\Dokumente\Handbücher\Thema1\Handbuch1.pdf
 C:\Dokumente\Handbücher\Thema2\Handbuch1.doc
 C:\Dokumente\Handbücher\Thema2\Handbuch2.doc
 C:\Dokumente\Handbücher\Thema3\Handbuch1.pdf
 
 ...
Danach möchte ich dieses Array abarbeiten und jedes File im Hintergrund ausdrucken. Habe versucht
über Shellexecute den Ausdruck zu erreichen.

Delphi-Quellcode:

ShellExecute(Application.Handle, 'print', PChar('C:\Dokumente\Handbücher\Thema1\Handbuch1.pdf'), NIL, NIL, SW_SHOWNORMAL);

...
Das dumme nur ich kann keinen speziellen Drucker beim ShellExecute mitgeben. Sollte einen Drucker aus einer Druckerliste übergeben können. Bzw. ich bekomme vom Drucker auch keine Rückmeldung auf das ich warten könnten
um das nächste File zu übergeben.

Zweiter Versuch dann über TPrinter von Delphi. Dort habe ich was gefunden mit dem Texte, Bilder, ... aus Delphi
heraus ausgedruckt werden können. Man kann über eine ComboBox einen Printer auswählen und dem Printer dann den
Text übergeben. Habe nur das wesentlich dazu als Bsp. eingefügt.

Delphi-Quellcode:
  ...

  printer.printerindex:= combobox1.itemindex;

  printer.begindoc;
  printer.canvas.textout(100,100,'Testzeile');
  printer.enddoc;

  ...
Habe dort aber nichts gefunden um z.B. dann ein Doc oder pdf - File zu übergeben und dieses dann auszudrucken.

Dritter Versuch habe was speziell über WordDokumente gefunden. Dazu muß man ein TWordDocument und ein TWordApplication in das Projekt einfügen. Danach kann dann das File über eine Connection über diese Komponenten übergeben werden.

Delphi-Quellcode:
  ...

  WordApplication1.Connect;
  WordApplication1.Visible:=false;
  VarFileName:='C:\Dokumente\Handbücher\Thema2\Handbuch1.doc';
  WordApplication1.Documents.Open(VarFileName,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
                                  EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
  WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
  Background:=false;
  Append:=false;
  Range:=wdPrintAllPages;
  WordDocument1.PrintOut(Background, Append, Range);
  WordDocument1.Close;
  WordDocument1.Disconnect;
  WordApplication1.Disconnect;

  ...
Hier das Problem kann natürlich nur Word Dokumente übergeben. Das andere ich muß speziell den Drucker mit OK
Button starten. Auch keine gute Lösung. Rückmeldung auf Erfolg gibt es auch nicht.

Bei allen drei Variante habe ich das Problem das ich vom Drucker keine Rückmeldung bekomme bevor ich das
nächste File dem drucker schicken kann. Sozusagen bleibe ich im Delphi Quellcode nicht stehen und kann
warten auf die rückmeldung eines erfolgreichen ausdrucks. Desweiteren muß ich speziell jedes Dokoment mit OK bestätigen damit es zum drucker gesendet wurde.

Hat jemand eine Lösung mit dem man ein Array abarbeiten kann und dort jedes Dokument schritt für schritt an
den drucker senden und ausdrucken kann? Vielleicht funktioniert es ja auch mit einer der oberen Varianten,
aber ich bin irgendwie nicht draufgekommen bzw. habe kein gutes Tutorial gefunden, mit dem ich dieses Problem
lösen könnte.

Vielleicht gibt es auch was ganz anderes wie man so was lösen kann.

Bin über jede Hilfe dankbar.
  Mit Zitat antworten Zitat