Drucken von PDF-Files mit API-Shellexecute()

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Drucken von PDF-Files mit API-Shellexecute()

Beitrag von Lewi »

Moin,
ich bin auf folgendes Problem gestoßen: Wird mit der Windows-API-Funktion ShellExecute() ( z.B. shellexecute(, "print", "Test.pdf",,, SW_NORMAL) ) ein PDF-Dokument gedruckt, schließt sich nach Beendigung des Drucks das Arcobat-Fenster nicht. Dieses Phänomen tritt bei der Acrobat-Version 7.xx auf, mit der Version 5 schließt sich das Fenster automatisch. Bei der 6er Version weiß ich es nicht.

Müssen für die 7er Version evtl. Parameter übergeben werden (und welche), damit sich nach dem Druck Acrobat automatisch beendigt?

Gruß, Olaf
rassekst
UDF-Programmierer
UDF-Programmierer
Beiträge: 97
Registriert: Mi, 01. Feb 2006 23:49
Wohnort: Glauchau
Kontaktdaten:

Beitrag von rassekst »

Hallo,

Ging schon in V6 nicht mehr.

Wurde vermutlich bewusst von Adobe eingebaut.

Gruss Steffen
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Re: Drucken von PDF-Files mit API-Shellexecute()

Beitrag von Lewi »

Mittlerweile gibt es leistungsfähhige und ebenfalls kostenlose Alternative zum Arcobat-Reader, die übrigens auch nicht so resourcenhungrig sind.
Mit dem Foxit-Reader können PDF-Files z.B. auch ohne ActiveX gedruckt werden:

Code: Alles auswählen

#include "Common.ch"
#include "dll.CH"

// defines for ShellExecuteA

#define SHELL_OPEN      "open"
#define SHELL_PRINT     "print"
#define SHELL_EXPLORE   "explore"

#define SW_NORMAL                 1
#define SW_SHOW                    5

PROCEDURE AppSys

   /* use the ANSI charset by default */
   SET CHARSET TO ANSI

RETURN



PROCEDURE Main
   MsgBox("Anzeige eines PDF-Files")
   ShellExecute(NIL, SHELL_OPEN, "test.pdf")
   Msgbox("Drucken eines PDF-Files")
   IF ShellExecute(NIL, SHELL_PRINT, "test.pdf")
     MsgBox("PDF wurde gedruckt")
   endif

RETURN


FUNC ShellExecute(nWhnd, cMode, cFile, cPara, cDir, nShow )
   Local cBin := DllPrepareCall( "SHELL32.DLL", DLL_STDCALL, "ShellExecuteA")
   Local nErg
   SET DEFAULT to nWhnd to AppDesktop():GetHWnd()
   SET DEFAULT to cMode to SHELL_OPEN
   SET DEFAULT to nShow to SW_NORMAL

   cPara := iif( empty(cPara), cPara := 0, '"' + cPara +'"')
   iif( empty(cDir), cDir:=0, )
   nErg        := DllExecuteCall(cBin, nWhnd, @cMode, @cFile, @cPara, @cDir, nShow)

RETURN ( IIF( nErg <= 32, .F., .T.))
Viele Grüße
Olaf
SteffenL

Re: Drucken von PDF-Files mit API-Shellexecute()

Beitrag von SteffenL »

Der Foxit-Reader hat mir viele Probleme verursacht. Vielleicht lag es daran, dass ich mich zu doof angestellt hab ^^, aber das Qualitätsmanagement ist mir sehr wichtig.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Drucken von PDF-Files mit API-Shellexecute()

Beitrag von Jan »

Ich hab mich mal für den Fox-Reader interessiert. Jetzt nicht mehr:

- Der Support ist selbst bei potentiellen Kunden von denen grauenhaft (Interesse von deren Seite teilweise gegen Null)
- Das Teil kostet, sobald man das kommerziell einsetzen möchte. Und das nicht zu knapp.
- Die deutsche Niederlassung kennt die genauen Lizensierungsbedingungen nicht, muß in USA nachfragen, eine Antwort bekommt man trotzdem nicht.

So war das jedenfalls noch im vergangenen jahr.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Drucken von PDF-Files mit API-Shellexecute()

Beitrag von Manfred »

Jan,

wo steht, dass Foxit Reader Geld kostet? Und was hättest Du dann damit zu tun. Der User installiert das und Du gibst ihm nur die Möglichkeiten damit zu arbeiten.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Re: Drucken von PDF-Files mit API-Shellexecute()

Beitrag von Lewi »

Ich habe bei mir den Foxit Reader im Einsatz und keine Probleme.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Drucken von PDF-Files mit API-Shellexecute()

Beitrag von Jan »

Hallo Manfred,

es ging damals darum, daß ich den mit auf die CD packe. Ich wollte nicht, daß der User selber erst ins Internet gehen muß für das Teil. Und das geht eben dann nicht kostenfrei. Damals jedenfalls.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Re: Drucken von PDF-Files mit API-Shellexecute()

Beitrag von Lewi »

Hallo Jan,
lege doch auf der CD einen Download-Link mit entsprechenden Copyright-Hinweisen ab. Dann hätte der User auch immer die aktuelle Version.

Gruß, Olaf
Antworten