Allgemeines
Druckern mit Acrobat Reader

Von:Harro Schippan hs@dtsd.de
An:Christoph Zintel Zintel@swd-online.de :gelesen
erstellt am:13.05.2025 07:54:31 - #24410 in section Antworten     Antworten ohne Zitat

 

Hallo Harro,

habe gerade ein wenig rum probiert und es geht auch rein mit dem Shellexecute:

** LCZielDrucker = "DeinDrucker"
** LCPdfFile="Dein.pdf"
**DECLARE ShellExecute IN shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER
**SHELLEXECUTE( 0, "printto", LCPdfFile, LCZielDrucker, "/t", 2)

Der Parameter "/t" terminiert den Acrobat nach dem Ausdruck.

Ciaoooooooooooooo




Hallo Christoph,
so, hab jetzt mit printto getestet.
Der Parameter "/t" bewirkt, daß das gedruckte Dokument im Acrobat geschlossen wird, aber der Acrobat selbst bleibt offen.

Ich möchte mit dem Fux so um die 500 Dokumente auf einem bestimmten Drucker drucken.
Das klappt jetzt auch.
Die Belege werden in kurzer Zeit ( weniger als 1 Minute ) vom Fux abgewickelt.
Allerdings braucht der Acrobat dann so um die 50 MINUTEN um alle Belege abzuarbeiten.
In der Zeit kann man nichts anderes auf dem Rechner machen, weil der Focus ständig wechselt.
Von daher ist es gut, daß der Acrobat offen ist.
Es gehen zum Glück auch keine Belege verloren.

Hoffe, daß das jetzt auch bei meinem Kunden funktioniert.
Da hat ja der direkte Druck mit dem Acrobat ja zum sofortigen Absturz vom Fux geführt.

Erst mal Danke für Deine Hilfe
Gruß Harro

Von:Thomas Geissler info@softart-online.de
An:Harro Schippan hs@dtsd.de :gelesen
erstellt am:13.05.2025 08:54:23 - #24411 in section Antworten     Antworten ohne Zitat
Hallo Harro,

eine Alternative wäre, programmatisch eine Batchdatei mit
copy /b zu erstellen und ausführen zu lassen.

Gruß
Thomas

Von:Harro Schippan hs@dtsd.de
An:Christoph Zintel Zintel@swd-online.de :gelesen
erstellt am:13.05.2025 10:16:24 - #24412 in section Antworten     Antworten ohne Zitat

 

Hallo Harro,

habe gerade ein wenig rum probiert und es geht auch rein mit dem Shellexecute:

** LCZielDrucker = "DeinDrucker"
** LCPdfFile="Dein.pdf"
**DECLARE ShellExecute IN shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER
**SHELLEXECUTE( 0, "printto", LCPdfFile, LCZielDrucker, "/t", 2)

Der Parameter "/t" terminiert den Acrobat nach dem Ausdruck.

Ciaoooooooooooooo





Bin grade beim Kunden auf dem Rechner.

Gleiches Problem jetzt mit printto.
Ich denke im Moment, daß es an der shell32.dll liegt.

Das Programm stürzt sofort ab, wenn der SHELLEXECUTE angesprochen wird.

Wollte die shell32.dll mal austauschen, geht aber nicht.
Trotz Admin-Rechten läßt der Rechner das nicht zu.
Ich brauche die Rechte von "TrustedInstaller"

Auf meinem Rechner habe ich die ProduktVersion: 10.0.22621.5124 09.04.2025
Der Kunde hat die Version: 10.0.26100.3624 24.04.2025

Woran könnte es noch liegen?

Von:Harro Schippan hs@dtsd.de
An:Thomas Geissler info@softart-online.de
erstellt am:13.05.2025 10:20:49 - #24413 in section Antworten     Antworten ohne Zitat

 

Hallo Harro,

eine Alternative wäre, programmatisch eine Batchdatei mit
copy /b zu erstellen und ausführen zu lassen.

Gruß
Thomas




Hallo Thomas,
Ich soll die PDF-Datei zum Drucker kopieren?

Das geht?

Gruß Harro

Von:Christoph Zintel Zintel@swd-online.de
An:Harro Schippan hs@dtsd.de :gelesen
erstellt am:13.05.2025 10:35:57 - #24414 in section Antworten     Antworten ohne Zitat
Hallo Harro,

das kann nicht an der DLL liegen, meine ist auch die gleiche Version, wie bei Deinem Kunden und kackt nicht ab.

Übrigens wird bei mir mit /t tatsächlich der Acrobat auch terminiert!

Ciaoooooooo

Christoph

Von:Harro Schippan hs@dtsd.de
An:Christoph Zintel Zintel@swd-online.de :gelesen
erstellt am:13.05.2025 10:49:42 - #24415 in section Antworten     Antworten ohne Zitat

 

Hallo Harro,

habe gerade ein wenig rum probiert und es geht auch rein mit dem Shellexecute:

** LCZielDrucker = "DeinDrucker"
** LCPdfFile="Dein.pdf"
**DECLARE ShellExecute IN shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER
**SHELLEXECUTE( 0, "printto", LCPdfFile, LCZielDrucker, "/t", 2)

Der Parameter "/t" terminiert den Acrobat nach dem Ausdruck.

Ciaoooooooooooooo






Hi,
habe eine neue Erkenntnis:

Habe dieses Programm als exe erstellt:
*****************************************************************************
* Drucke PDF-Files mit SHELLEXECUTE printto
CLEAR
DECLARE ShellExecute IN shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER
lcPDFFile = ADDBS('C:\KnG-PDF-Manager\RE-352124-127650.pdf')
lcPrinter = "RICOH MP C5503 PCL 6"
FOR lni = 1 TO 10
retcd = ShellExecute(0,"printto", lcPDFFile , lcPrinter,"",0)
? lni, retcd at 20, lcPDFFile
ENDFOR
? "fertig"
WAIT WINDOW "huhu" TIMEOUT 30
*****************************************************************************

Es gibt hier keinen Abbruch von VFP.
Die 10 ShellExecute-Aufrufe alle mit ReturnCode 42, also ok
Der Acrobat startet.
Es werden allerdings keine Daten an den Drucker geschickt.

Wie schon mal gesagt, das läuft auf mehr als 20 Rechnern ohne Probleme.

Das ist ein ganz neuer Rechner. Auf einem zweiten läuft das Programm

Von:Christoph Zintel Zintel@swd-online.de
An:Harro Schippan hs@dtsd.de :gelesen
erstellt am:13.05.2025 11:49:11 - #24416 in section Antworten     Antworten ohne Zitat
Hallo Harro,

werden die Drucker an dem PC von Windows verwaltet? Wenn ich Hand
an einen neuen PC beim Kunden lege, dann stelle ich einmalig einen Drucker
als Windows-Standard-Drucker ein. Dann fragt Windows 11 nämlich, ob der
Standard-Drucker nicht mehr von Windows verwaltet werden soll. Die Frage
beantworte ich dann mit JA und wechsle wieder auf den bisherigen Drucker.

Ciaooooooooooo

Christoph

Von:Bernhard Sander dfpug@individsoft.de
An:Harro Schippan hs@dtsd.de :gelesen
erstellt am:13.05.2025 11:57:59 - #24417 in section Antworten     Antworten ohne Zitat
Hallo Harro,


 

lcPDFFile = ADDBS('C:\KnG-PDF-Manager\RE-352124-127650.pdf')




Damit wird ein Backslash ans Ende des Dateinamens gehängt. Mag es evtl. daran liegen, dass nichts gedruckt wird?

Viele Grüße
Bernhard Sander

Von:Harro Schippan hs@dtsd.de
An:Christoph Zintel Zintel@swd-online.de :gelesen
erstellt am:13.05.2025 12:23:30 - #24418 in section Antworten     Antworten ohne Zitat

 

Hallo Harro,

werden die Drucker an dem PC von Windows verwaltet? Wenn ich Hand
an einen neuen PC beim Kunden lege, dann stelle ich einmalig einen Drucker
als Windows-Standard-Drucker ein. Dann fragt Windows 11 nämlich, ob der
Standard-Drucker nicht mehr von Windows verwaltet werden soll. Die Frage
beantworte ich dann mit JA und wechsle wieder auf den bisherigen Drucker.

Ciaooooooooooo

Christoph




Hi Christoph,
das mache ich genau so.

Bin jetzt an dem Rechner als Administrator angemeldet.
Hab Acrobat Reader deinstalliert und neu installiert.
Vielleicht hätte ich einen Neustart dazwischen machen sollen.

Hiermit wird ein Dokument gedruckt:
Der retcd ist 42
******************************************************************
lcAction = "open"
lcFileName = lcAcro
lcParams = lcParaAcro + ["] + lcPath+lcPDFfile + [" "] + gcDrucker + ["]
lcDir = ""

retcd = ShellExecute(0,lcAction,lcFileName,lcParams,lcDir,0)
? "ShellExecute:", retcd
******************************************************************


Hiermit wird KEIN Dokument erzeugt:
Der Acrobat zuckt ein wenig rum
Außerdem bekomme ich Retcd ".T." ( kein 42 )
****************************************************************************** Drucke PDF-Files mit SHELLEXECUTE printto
CLEAR
DECLARE ShellExecute IN shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER
lcPDFFile = ADDBS('C:\KnG-PDF-Manager\RE-352124-127650.pdf')
lcPrinter = "RICOH MP C5503 PCL 6"
lcPrinter = "RICOH MP C5503 [0026739C204D]"

FOR lni = 1 TO 10
retcd = ShellExecute(0,"printto", lcPDFFile , lcPrinter,"",0)
? lni, retcd at 20, lcPDFFile
ENDFOR
? "fertig"
*****************************************************************************

Bin ratlos.
Er hat zwei gleiche Rechner neu gekauft.
Einer geht, der andere nicht.




Von:Harro Schippan hs@dtsd.de
An:Bernhard Sander dfpug@individsoft.de :gelesen
erstellt am:13.05.2025 12:35:42 - #24419 in section Antworten     Antworten ohne Zitat

 

Hallo Harro,


 

lcPDFFile = ADDBS('C:\KnG-PDF-Manager\RE-352124-127650.pdf')




Damit wird ein Backslash ans Ende des Dateinamens gehängt. Mag es evtl. daran liegen, dass nichts gedruckt wird?

Viele Grüße
Bernhard Sander





Danke, hatte aus zwei Zeilen eine gemacht.
Leider keine Verbesserung im Programm.

Warum liefert der SHELLEXECUTE ".T." und nicht 42 ??

****************************************************************************** Drucke PDF-Files mit SHELLEXECUTE printto
CLEAR
DECLARE ShellExecute IN shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER
lcPDFFile = "C:\KnG-PDF-Manager\RE-352124-127650.pdf"

IF FILE(lcPDFFile )
? "Datei ist vorhanden"
ELSE
? "Mist"
RETURN
ENDIF

lcPrinter = "RICOH MP C5503 PCL 6"
*lcPrinter = "RICOH MP C5503 [0026739C204D]"

FOR lni = 1 TO 10
retcd = ShellExecute(0,"printto", lcPDFFile , lcPrinter,"/t",2)
? lni, retcd at 20, lcPDFFile
ENDFOR
? "fertig"
*****************************************************************************



Von:Harro Schippan hs@dtsd.de
An:Harro Schippan hs@dtsd.de :gelesen
erstellt am:13.05.2025 14:12:51 - #24420 in section Antworten     Antworten ohne Zitat
Habe eben herausgefunden, daß wenn hinter dem DECLARE "INTEGER" fehlt, bekommt man .T. und .F.

DECLARE integer ShellExecute IN shell32.DLL INTEGER, STRING, STRING, STRING, STRING, INTEGER

Wenn man mit "print" und "printto" arbeitet, wird die den Suffix zugeordnete Anwendung gestartet, so ist mein Eindruck.

Auf meinem "Problem Rechner" tauchen die gleichen Probleme bei PDF und TXT Dateien auf.
Habe den Eindruck, als ob intern der Druckername nicht immer richtig weiter gereicht wird.

Da der Rechner nagelneu ist, habe ich dem Kunden vorgeschlagen eine komplette Neuinstallation durchzuführen.

Habt ihr andere (bessere) Vorschläge?

Gruß Harro