04.05.09, 10:35
|
#1 (permalink)
|
|
Mitglied Platin
Registriert seit: Dec 2004
Beiträge: 678
Renommee-Modifikator: 13
|
PDF-Dateien automatisch drucken
Hallo Leute,
ich suche ein Möglichkeit wie ich unter Windows beliebig viele PDF-Dateien (derzeit etwa 1.300) automatisch drucken lassen kann.
Ansatz (Batch):
|
Code:
|
@for %%p in ("H:\xampplite\htdocs\bookdbs\trunk\static\bestellzettel\*.pdf") do "C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe" /p %%p
|
Der Code funktioniert soweit. Einzige Probleme:
* Acrobat Reader verlangt eine Bestätigung um den Druckvorgang zu starten
* Acrobat Reader schließt sich nicht wieder automatisch
Hintergrundinformationen:
* PDF's werden automatisch mit PHP/LaTeX erstellt.
Danke für eure Hilfe, es muss übrigens nicht zwangsläufig Batch sein.
Gruß.
|
04.05.09, 13:30
|
#2 (permalink)
|
|
Mitglied Brilliant
Registriert seit: Apr 2007
Ort: Hannover
Beiträge: 829
|
AW: PDF-Dateien automatisch drucken
Unter VB nutze ich dafür die API-Funktion ShellExecute. Das funktioniert einwandfrei, man muss nach dem Druck nur in einer Schleife prüfen, ob das Acrobat Fenster noch offen ist.
__________________
„Ich glaube, wenn man weiß, woran man glaubt, dann ist es viel einfacher, Fragen zu beantworten. Ich kann Ihre Frage nicht beantworten." (George W. Bush)
|
05.05.09, 10:22
|
#3 (permalink)
|
|
Mitglied Platin
Registriert seit: Dec 2004
Beiträge: 678
Renommee-Modifikator: 13
|
AW: PDF-Dateien automatisch drucken
Könntest du mir bitte den entsprechenden Code zur Verfügung stellen?
|
05.05.09, 12:32
|
#4 (permalink)
|
|
Mitglied Brilliant
Registriert seit: Apr 2007
Ort: Hannover
Beiträge: 829
|
AW: PDF-Dateien automatisch drucken
Wie gesagt, ich mache das in VB6. Das sollte aber in VBScript auch so ähnlich möglich sein.
Hiermit wird der Ausdruck durchgeführt, und der Acrobat Reader hinterher geschlossen:
|
Code:
|
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const WM_CLOSE = &H10
Const SW_SHOWNORMAL = 1
Const SW_SHOWMINIMIZED As Long = 2
Const SW_HIDE As Long = 0
Private Sub PrintPDF(FileName as String)
Dim Ausdruck As Boolean
Dim WinWnd As Long
Dim b as Long
Ausdruck = ShellExecute(Me.hwnd, "print", Filename, vbNullString, vbNullString, SW_HIDE)
DoEvents
Sleep 2000 '2 Sekunden warten
Do While WinWnd = 0
b = b + 1 '' Schleife, Adobee druckt wohl noch
DoEvents
WinWnd = FindWindow(vbNullString, "Adobe Reader")
DoEvents
If b > 3000 Then 'Gucken, ob Adobe Reader mit Datei geöffnet ist (GetFileFromPath ist eine kleine Funktion, die den Dateinamen ohne Pfad zurück gibt)
WinWnd = FindWindow(vbNullString, "Adobe Reader - [" & GetFileFromPath(Filename) & "]")
Else
WinWnd = FindWindow(vbNullString, "Adobe Reader")
End If
If b > 9000 Then '.Adobe Reader nicht da, ist wohl schon beendet
Exit Do
End If
Loop
If b <= 9000 Then '. . . . . . . Acrobat Reader schließen
PostMessage WinWnd, WM_CLOSE, 0&, 0&
End If
End Sub
|
Ich hoffe, Du kommst damit weiter. Da das ganze bei mir Teil einer komplexen Funktion ist, habe ich hier nur die relevanten Teile raus geholt.
Grüsse
ronaldh
__________________
„Ich glaube, wenn man weiß, woran man glaubt, dann ist es viel einfacher, Fragen zu beantworten. Ich kann Ihre Frage nicht beantworten." (George W. Bush)
|
06.05.09, 13:02
|
#5 (permalink)
|
|
Mitglied Platin
Registriert seit: Dec 2004
Beiträge: 678
Renommee-Modifikator: 13
|
AW: PDF-Dateien automatisch drucken
Werde ich mir in den nächsten Tagen genauer ansehen, danke.
|
|