bordermax
Goto Top

PDF mit VBSkript erstellen

Hi,

ich würde gerne aus einem VB-Skript heraus eine PDF Datei erzeugen.
Ideal wäre wenn es eine Möglichkeit gäbe das PDF direkt zu erzeugen, vielleicht über irgendein Kommandozeilentool.
Alternativ wäre mir aber auch schon geholfen, wenn ich die zu druckende Datei (ist ein txt-Datei) zum PDF-Druckspooler schicken könnte.
Der PDF-Drucker ist aber nicht der Standarddrucker !

Gruß

Markus

Content-ID: 134098

Url: https://administrator.de/contentid/134098

Ausgedruckt am: 23.11.2024 um 01:11 Uhr

tmystr
tmystr 22.01.2010 um 10:29:05 Uhr
Goto Top
Guten Morgen,

ich weiss jetzt nicht dir direkt zu helfen.
Aber mit der Alternativlösung habe ich Erfahrung.
Ich würde FreePDF Vorschlagen. (Freeware + noch nie Probleme gehabt + läuft einfach klasse+leicht zu bedienen)

MFG
TsukiSan
TsukiSan 22.01.2010 um 10:31:35 Uhr
Goto Top
Hallo bordermax,

eventuell helfen dir diese Jungs weiter.

Gruss
Tsuki
bordermax
bordermax 22.01.2010 um 11:00:07 Uhr
Goto Top
Hab im Netz folgendes Skript gefunden ....

Option Explicit

Dim objShellApp
Dim argument
Dim strFile
If WScript.Arguments.Count < 1 Then
WScript.Echo("Usage: printfile.vbs file.doc")
WScript.Quit
End If

strFile = WScript.Arguments(0)

Set objShellApp = WScript.CreateObject("Shell.Application")
objShellApp.ShellExecute strFile, "", "/D:\\Rechnername\Spoolername", "print", 0
'objShellApp.ShellExecute strFile, "", "", "print", 0

WScript.Sleep(5000)

Set objShellApp = Nothing

Das Skript schickt zwar die Datei zum Drucker, aber immer zum Standarddrucker ???


Markus
bastla
bastla 22.01.2010 um 12:39:31 Uhr
Goto Top
Hallo bordermax!

Bei der Installation des PDFCreator werden (hoffentlich auch bei der aktuellen Version 0.9.9) in den Ordner "Programmordner\COM\Windows Scripting Host\VBScripts" eine Reihe von Scripts gelegt ...

Grüße
bastla
mayho33
mayho33 23.01.2010 um 16:53:19 Uhr
Goto Top
Hi!

Habe hier ein kleines Häppchen gefunden aus einem alten Projekt das wir aber nie abgeschlossen haben


' Transfer Print Jobs to a Different Print Queue
'VBS


strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set objPrinter = objWMIService.Get _
("Win32_Printer.DeviceID='DER_GESUCHTE_DRUCKER'")

objPrinter.PortName = "Der gewünschte Port z.B LPT1"
objPrinter.Put_

Grüße

Mayho
bastla
bastla 23.01.2010 um 18:49:27 Uhr
Goto Top
Hallo bordermax!

Wenn das Ausdrucken zum Standarddrucker schon funktioniert, könntest Du es so versuchen:
PDFPrinter = "Druckername PDF-Drucker"  

If WScript.Arguments.Count < 1 Then
    WScript.Echo("Usage: printfile.vbs file.doc")  
    WScript.Quit
End If
strFile = WScript.Arguments(0)

'Standarddrucker zwischenspeichern  
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")  
Set colInstalledPrinters =  objWMIService.ExecQuery("Select * from Win32_Printer where Default = 'True'")  
For Each objPrinter in colInstalledPrinters
   Def = objPrinter.DeviceID
Next

'PDF-Drucker als Standard setzen  
objWMIService.ExecMethod "Win32_Printer.DeviceID='" & PDFPrinter & "'", "SetDefaultPrinter"  

Set objShellApp = WScript.CreateObject("Shell.Application")  
objShellApp.ShellExecute strFile, "", "/D:\\Rechnername\Spoolername", "print", 0  

WScript.Sleep(5000)

Set objShellApp = Nothing

'Wieder alten Standarddrucker setzen  
If Def <> "" Then objWMIService.ExecMethod "Win32_Printer.DeviceID='" & Def & "'", "SetDefaultPrinter"  
Grüße
bastla

P.S.: Für das Posten von Code hätten wir hier die Tags <code> und </code> ...
bordermax
bordermax 23.01.2010 um 23:47:22 Uhr
Goto Top
Hallo Bastla,

danke für den Tip, so hab ich's mittlerweile auch realisiert.
Nur hab ich das ganze über Regkeys gemacht, Deine Lösung über WMI sieht mir da doch eleganter aus !

Gruß

Markus

P.S.: Das mit dem posten von Code muß ich wohl noch üben face-smile
bordermax
bordermax 25.01.2010 um 08:03:44 Uhr
Goto Top
Hallo Mayho,

kannste mir noch sagen wie ich Dein Skript weiter bearbeiten muß damit ich die Datei zum Drucker geschickt bekomme ?

Gruß

Markus
mayho33
mayho33 03.02.2010 um 22:44:04 Uhr
Goto Top
Hi Bordermax!

Sorry, ist etwas stressig in letzter Zeit

Also das Script oben macht eigentlich nichts anderes als dass es den Port des Druckers ändert und das dauerhaft. Im Treiber des Druckers kannst du einen eigenen Port definieren auf den du dann umleiten kannst. Würde sicher auch per Script gehen.
Das script müsste für temp. Druck also vorher auf den Port "Keine-Ahnung" umstellen und dann wieder zurück. Wie du das aber während des Drucks machst kann ich dir auf die Schnelle echt nicht sagen.


Sorry

MAyho