AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Mehrere PDF Dateien über TPDF drucken
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere PDF Dateien über TPDF drucken

Ein Thema von Sven Janssen · begonnen am 3. Nov 2005 · letzter Beitrag vom 4. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#1

Mehrere PDF Dateien über TPDF drucken

  Alt 3. Nov 2005, 11:11
Hi,

schon einmal jemand hinbekommen über das OCX Element TPDF mehrere PDF Dateien hintereinander zu drucken?
Das Problem bei mir ist, das LoadFile() nicht wartet bis das PDF komplett geladen wurde und damit printAll ins leere greift.
Bei einer Schleife mit mehrere Dateien kommt dabei immer das letze heraus. Setze ich ein sleep zwischen loadFile() und printAll, dann stoppt auch loadFile() und ich habe das selbe Problem. Nur mit einem showmessage kann ich das Problem umgehen. Was natürlich nicht wirklich praktikabel ist.

Gruß
Sven
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#2

Re: Mehrere PDF Dateien über TPDF drucken

  Alt 4. Nov 2005, 09:50
Keiner ne Idee? *mist*
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Mehrere PDF Dateien über TPDF drucken

  Alt 4. Nov 2005, 09:56
Ich hab zwar die Komponente nicht, aber du könntest es ja somachen:
Delphi-Quellcode:
loadfile(filename);
while not printall do begin end;
end;
irgendwie kannst du bestimmt testen, ob der Drucker ins leere gegriffen hat und das dann wiederholen

oder so:
Delphi-Quellcode:
loadfile(filename);
while not loaded do begin end;
printall;
Michael Enßlin
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#4

Re: Mehrere PDF Dateien über TPDF drucken

  Alt 4. Nov 2005, 10:03
Doch Du hast die bestimmt ;-)
Wenn Du den Acrobat Reader installiert hast, kannst Du eine ActiveX Komponente installieren.

printAll ist leider eine procedure, Ereignisse für erfolgreiches laden und erfolgreiches drucken gibt es auch nicht. loadFile() ist zwar als function mit einem boolean Rückgabewert deklariert, leider gibt es gar nichts zurück :-/
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Mehrere PDF Dateien über TPDF drucken

  Alt 4. Nov 2005, 10:07
dann versuch irgendeine Aktion durchzuführen, für die eine Datei geladen sein muss, und bei der sonnst einen exception auftritt. Die kannst du dann abfragen.

//edit: auch wenn abfragen per exception verschrien sind, was ist daran schlecht?
Michael Enßlin
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#6

Re: Mehrere PDF Dateien über TPDF drucken

  Alt 4. Nov 2005, 10:14
Moin zusammen,

also vorweg, ich habe mit TPDF bisher keine Erfahrung, aber Du müstest die Druckerwarteschlange abfragen können, ob noch ein Dokument mit Deinem Dokumentennamen vorhanden ist. Ist es weg, dann drucke das nächste.

Grüße // Martin


PS: Sonst hilft vielleicht eine Mail an Adope. Probieren kann man es ja mal, denn bei den OCX´en hängt man doch sehr am Hersteller.

PPS: Vielleicht findet sich hier noch etwas: How To Use Adobe Acrobat (PDF) Files in a Delphi Application

3PS: Zur automatischen OCX-Registrierung findet sich hier auch etwas: OCS-Registrierung per Delphi
Gibt es eigentlich eine Möglichkeit ocx´se zu verwenden ohne diese zu registrieren, sozusagen dynamisch zu laden wie dll?
Martin Schaefer
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Mehrere PDF Dateien über TPDF drucken

  Alt 4. Nov 2005, 10:17
er will ja garnicht die Druckerwarteschlangen abfragen sonder abfragen welchen Auftrag der Drucker gekriegt hat.
Michael Enßlin
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#8

Re: Mehrere PDF Dateien über TPDF drucken

  Alt 4. Nov 2005, 10:28
Moin, moin,

ja was zum Drucker geht, muß erst durch die Warteschlange. Hier gibt es Info wie man an die Warteschlange kommt: Warteschlange listen

PS: Man kann auch über die Position des Dokumentes in der Warteschlange den Zeitrum bis zur erneuten Abfragen der Schlange setzen.

Sonst, viel Erfolg // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#9

Re: Mehrere PDF Dateien über TPDF drucken

  Alt 4. Nov 2005, 11:14
Theorie gut, Praxis schlecht.
Vorallem ist das Risiko ziemlich hoch das ne Endlosschleife entsteht.

Zunächst ist nach folgendem Code:
Delphi-Quellcode:
pdf1.LoadFile(pdfpfad);
pdf1.printall;
showmessage(inttostr(getNumberPrintJobs));
Das Ergebnis 0.
Ich müsste also schauen wann der Druckauftrag reinkommt und bis er wieder raus ist und dann erst weitermachen in der Verarbeitung. Höchst heikel wie ich finde.
Was ist z.b wenn der Drucken angehalten ist, oder die Druckaufträge nicht weiter bearbeitet?! *hmm*

Dennoch danke für die Tipp.

Sven
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Mehrere PDF Dateien über TPDF drucken

  Alt 4. Nov 2005, 11:20
du kannst ja in die Schleife noch eine Zeitabfrage reinbauen. Vor der Schleife schreibst du

timestart:=now; (timestart:tdatetime)

In der Schleife dann
Delphi-Quellcode:
if 24*3600*(now-timestart)>=10 then begin //wenn die endlosschleife seit mehr als 10 sec läuft
  messagedlg('Dokument konnte nicht gedruckt werden: Der Drucker reagiert nicht.',mterror,[mbok],0);
  exit; //break wenn nur zum nächsten doku gesprungen werden soll.
end;
Michael Enßlin
  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 11:59 Uhr.
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