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-Key: 134098

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

Printed on: April 25, 2024 at 20:04 o'clock

Member: tmystr
tmystr Jan 22, 2010 at 09:29:05 (UTC)
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
Member: TsukiSan
TsukiSan Jan 22, 2010 at 09:31:35 (UTC)
Goto Top
Hallo bordermax,

eventuell helfen dir diese Jungs weiter.

Gruss
Tsuki
Member: bordermax
bordermax Jan 22, 2010 at 10:00:07 (UTC)
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
Member: bastla
bastla Jan 22, 2010 at 11:39:31 (UTC)
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
Member: mayho33
mayho33 Jan 23, 2010 at 15:53:19 (UTC)
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
Member: bastla
bastla Jan 23, 2010 at 17:49:27 (UTC)
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> ...
Member: bordermax
bordermax Jan 23, 2010 at 22:47:22 (UTC)
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
Member: bordermax
bordermax Jan 25, 2010 at 07:03:44 (UTC)
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
Member: mayho33
mayho33 Feb 03, 2010 at 21:44:04 (UTC)
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