Kann hier wer VBS scripten??

Probleme mit Soft und Hardware

Moderator: TweetyTreiber

Kann hier wer VBS scripten??

Beitragvon heatwalker » 02.02.2010 - 20:25

Ich will ein VBS Script abändern, weiss aber nicht wie. :oops:
Haben wir hier nen Crack?

Es gibt das Programm PDF-Creator zum PDF erstellen.
Bei diesem kann ich über ein VBS Script ein Wasserzeichen hinzufügen.
Soweit kein Problem.
Aaaaber, ich möchte das die 1. Seite ein anderes Wasserzeichen als die 2. Seite bekommt.

Wer kann helfen?

Code: Alles auswählen
' AddWatermarkToPDF script
' Part of PDFCreator
' License: GPL
' Homepage: http://www.sf.net/projects/pdfcreator
' Version: 1.1.0.0
' Date: September, 1. 2005
' Author: Frank Heindörfer
' Comments: This script needs pdftk.
'           For more informations about the freeware pdftk use this link:
'           http://www.accesspdf.com

Option Explicit

Const AppTitle = "PDFCreator - AddWatermarkToPDF"
Const PathToPdftk = "d:\PDFCreator\pdftk.exe"
Const WatermarkPDF = "watermark.pdf"

Dim objArgs, fname, tfname, fso, WshShell, oExec

Set objArgs = WScript.Arguments

If objArgs.Count = 0 Then
MsgBox "This script needs a parameter!", vbExclamation, AppTitle
WScript.Quit
End If

fname = objArgs(0)

Set fso = CreateObject("Scripting.FileSystemObject")

If Ucase(fso.GetExtensionName(fname)) <> "PDF" Then
MsgBox "This script works only with pdf files!", vbExclamation, AppTitle
WScript.Quit
End If

If Not fso.FileExists(PathToPdftk) Then
MsgBox "You need pdftk for this script!" & vbcrlf & vbcrlf & _
  "Please go to http://www.accesspdf.com and download it.", vbExclamation, AppTitle
WScript.Quit
End If

If Not fso.FileExists(WatermarkPDF) Then
MsgBox "Can't find the watermark pdf file!", vbExclamation, AppTitle
WScript.Quit
End If

Set WshShell = CreateObject("WScript.Shell")

tfname = fso.GetTempName
WshShell.Run PathToPdftk & " """ & fname & """ background " & WatermarkWaPDF & " output """ & tfname & """",0,true

If Not fso.FileExists(tfname) Then
MsgBox "There was an error using ""pdftk""!", vbCritical, AppTitle
WScript.Quit
End If

If fso.FileExists(fname) Then
fso.DeleteFile(fname)
End If

fso.MoveFile tfname, fname
Benutzeravatar
heatwalker
5 Sterne
5 Sterne
 
Beiträge: 5356
Registriert: 03.01.2004 - 22:37
Wohnort: Wershofen/Eifel
Geschlecht: Mann
Alter: 57

Beitragvon Tonnengott OSkar » 02.02.2010 - 20:28

Dau Lösungsvorschlag: einfach 2 PDF´s erstellen
















[center]
Das Kleingedruckte:

Dies ist kein persönlicher Angriff!
Nein ich bin nicht Angepisst!
[/center]
mit reschtchreibfehlern kanste machen was de willst ^^^^^^
hinweiss auf shift kanste sparen^^ der Knopp is im poppo ^^^^^^
Benutzeravatar
Tonnengott OSkar
5 Sterne
5 Sterne
 
Beiträge: 3580
Registriert: 26.03.2007 - 22:15
Wohnort: zu Hause in Bremen (Bremen) (SC35) Beiträge: wieder einer weniger
Geschlecht: Nicht spezifiziert

Beitragvon heatwalker » 02.02.2010 - 20:30

:roll: Das mach ich zur Zeit ja, aber ist extrem unpraktisch.
Benutzeravatar
heatwalker
5 Sterne
5 Sterne
 
Beiträge: 5356
Registriert: 03.01.2004 - 22:37
Wohnort: Wershofen/Eifel
Geschlecht: Mann
Alter: 57

Beitragvon Crispy » 02.02.2010 - 21:17

:denk:
Hat das Programm ne Hilfedatei in der auf VBS eingegangen wird?

Im Prinzip ist das ja Standardbasic:

i=PDF.Pages
PDF.Page(1).Wasserzeichen=Grafikxy
for j=2 to i
PDF.Page(j).Wasserzeichen=Grafikyz
next j

Irgendwie in der Art
Hängt halt davon ab, ob auf die Datei Objektorientiert zugegriffen wird und wie die Objekteigenschaften lauten.



:denk:
Warum nutzt Du eigentlich keine Linuxtools? Da gibts doch genügend PDF-Tools ;)
Bild BildBildBild
Benutzeravatar
Crispy
5 Sterne
5 Sterne
 
Beiträge: 16874
Registriert: 09.05.2003 - 16:53
Wohnort: Wrist (2002er PC 35)
Geschlecht: Mann
Alter: 50

Beitragvon heatwalker » 02.02.2010 - 21:24

Ist nicht für mich sondern für einen Kunden. 8-)

Nur mit vbs wird es wohl nicht gehen. Was ich mittlerweile herausgefunden habe ist ...

Es wird ja PDFTK genutzt
Code: Alles auswählen
tfname = fso.GetTempName
WshShell.Run PathToPdftk & " """ & fname & """ background " & WatermarkWaPDF & " output """ & tfname & """",0,true


Mit background wird das Wasserzeichen eingesetzt und mit output die Datei abgespeichert.

So wie ich das sehe brauch ich jetzt einen Workaround der die Datei vorher splittet, die 1. Seite mit dem Wasserzeichen versieht und dann wieder zusammenfügt.

**confused**

Unter Linux wird im übrigen für derlei Spielchen auch gerne pdftk eingesetzt. :lol:
Benutzeravatar
heatwalker
5 Sterne
5 Sterne
 
Beiträge: 5356
Registriert: 03.01.2004 - 22:37
Wohnort: Wershofen/Eifel
Geschlecht: Mann
Alter: 57

Beitragvon }{mpf » 02.02.2010 - 22:21

Sorry hab gerade keine Zeit, deswegen nur ganz kurz, wenn eh pdftk genutzt wird: Damit kannst du ohne weiteres pdf splitten, individuell Wasserzeichen hinzufügen und wieder zusammenfügen. Alles weitere in der manpage.
There is nothing wrong with me! Maybe it is the universe? :schaf:

Wer mir eine verschlüsselt Nachricht senden will, verschließt die Nachricht bitte mit meinem öffentlichen Schlüssel/Schloss.
Damit ich euch eine verschlüsselte Nachricht senden kann, brauch ich euren öffentlichen Schlüssel. Hä? Hier wird erklärt, was es damit auf sich hat. Noch Fragen? Einfach fragen. :help:
Benutzeravatar
}{mpf
5 Sterne
5 Sterne
 
Beiträge: 18000
Registriert: 13.04.2002 - 12:51
Wohnort: 24105 Kiel
Geschlecht: Mann
Alter: 39

Beitragvon heatwalker » 02.02.2010 - 23:00

Jo, das ist mir schon klar. Die Manpage kenne ich. Rein auf konsole auf alles kein Thema.

Nur wie bringe ich das ädequat in das vbs script?? :nixweiss:
Benutzeravatar
heatwalker
5 Sterne
5 Sterne
 
Beiträge: 5356
Registriert: 03.01.2004 - 22:37
Wohnort: Wershofen/Eifel
Geschlecht: Mann
Alter: 57

Beitragvon Crispy » 02.02.2010 - 23:24

Indem Du die Teile der PDF-Datei in ein temporäres Verzeichnis packen lässt und dann Datei für Datei beackerst.

Per vbScript müsste es möglich sein den Verzeichnisinhalt (also die einzelnen Dateinamen) in ein StringArray einzulesen, die Anzahl der Strings zu ermitteln und dann in einer Schleife abarbeiten zu lassen.

http://psacake.com/web/func/

http://www.source-code.biz/snippets/vbscript/1.htm

Die ListDir-Function vom Script im zweiten Link dürfte da ziemlich nahe dran kommen.
Bild BildBildBild
Benutzeravatar
Crispy
5 Sterne
5 Sterne
 
Beiträge: 16874
Registriert: 09.05.2003 - 16:53
Wohnort: Wrist (2002er PC 35)
Geschlecht: Mann
Alter: 50

Beitragvon heatwalker » 02.02.2010 - 23:52

Da rumpelt mir der Schädel. Muss ich mir morgen mal anschauen.
Benutzeravatar
heatwalker
5 Sterne
5 Sterne
 
Beiträge: 5356
Registriert: 03.01.2004 - 22:37
Wohnort: Wershofen/Eifel
Geschlecht: Mann
Alter: 57

Beitragvon Auldnyx » 03.02.2010 - 21:04

Wenn du es als Shellscript hinbekommst dann auch unter Win, das VBS da oben ist doch nichts anderes als eine unübersichtliche Batch Datei...

Und wenn VBS nichts für dich ist, mach doch als CMD/BAT.
Bild Bild
Benutzeravatar
Auldnyx
5 Sterne
5 Sterne
 
Beiträge: 3310
Registriert: 27.05.2007 - 01:50
Wohnort: 33415 Verl GSX-R 750 K8
Geschlecht: Mann
Alter: 70

Beitragvon heatwalker » 03.02.2010 - 21:11

Bin noch nicht dazu gekommen rumzuprobieren. :oops:

Insgeheim hatte ich ja die Hoffnung irgendwer hat hier so aus der Tüte mal eben den Kniff. 8-)

Werde mich wohl mal am Wochenende drangeben.
Benutzeravatar
heatwalker
5 Sterne
5 Sterne
 
Beiträge: 5356
Registriert: 03.01.2004 - 22:37
Wohnort: Wershofen/Eifel
Geschlecht: Mann
Alter: 57

Beitragvon heatwalker » 30.03.2010 - 16:16

Hab mich heute nochmal dran begeben und eine Lösung erarbeitet. :lol:

Wahrscheinlich nicht schön, aber funktioniert mit dem PDFcreator.

Für alle die es brauchen können, hier das script.
Code: Alles auswählen
' AddWatermarkToPDF script
' Part of PDFCreator
' License: GPL
' Homepage: http://www.sf.net/projects/pdfcreator
' Version: 1.1.0.0
' Date: September, 1. 2005
' Author: Frank Heindörfer
' Comments: This script needs pdftk.
'           For more informations about the freeware pdftk use this link:
'           http://www.accesspdf.com

Option Explicit

Const AppTitle = "PDFCreator - AddWatermarkToPDF"
Const PathToPdftk = "d:\PDFCreator\pdftk.exe"
Const WatermarkPDF = "watermark.pdf"
Const WatermarkPDF1 = "watermark1.pdf"

Dim objArgs, fname, tfname, tfname1, tfname2, tfname3, tfname4, tfname5, fso, WshShell, oExec

Set objArgs = WScript.Arguments

If objArgs.Count = 0 Then
MsgBox "This script needs a parameter!", vbExclamation, AppTitle
WScript.Quit
End If

fname = objArgs(0)

Set fso = CreateObject("Scripting.FileSystemObject")

If Ucase(fso.GetExtensionName(fname)) <> "PDF" Then
MsgBox "This script works only with pdf files!", vbExclamation, AppTitle
WScript.Quit
End If

If Not fso.FileExists(PathToPdftk) Then
MsgBox "You need pdftk for this script!" & vbcrlf & vbcrlf & _
  "Please go to http://www.accesspdf.com and download it.", vbExclamation, AppTitle
WScript.Quit
End If

If Not fso.FileExists(WatermarkPDF) Then
MsgBox "Can't find the watermark pdf file!", vbExclamation, AppTitle
WScript.Quit
End If

Set WshShell = CreateObject("WScript.Shell")

tfname = fso.GetTempName
tfname1 = fso.GetTempName
tfname2 = fso.GetTempName
tfname3 = fso.GetTempName
tfname4 = fso.GetTempName
tfname5 = fso.GetTempName

WshShell.Run PathToPdftk & " A=""" & fname & """ cat A2-end output """ & tfname5 & """ ",0,true

If fso.FileExists(tfname5) Then
   WshShell.Run PathToPdftk & " A=""" & fname & """ cat A1 output """ & tfname1 & """ ",0,true
   WshShell.Run PathToPdftk & " """ & tfname1 & """ stamp " & WatermarkPDF & " output """ & tfname2 & """ ",0,true
   WshShell.Run PathToPdftk & " A=""" & fname & """ cat A2-end output """ & tfname3 & """ ",0,true
   WshShell.Run PathToPdftk & " """ & tfname3 & """ stamp " & WatermarkPDF1 & " output """ & tfname4 & """ ",0,true
   WshShell.Run PathToPdftk & " """ & tfname2 & """ """ & tfname4 & """ cat output """ & tfname & """ ",0,true
else
   WshShell.Run PathToPdftk & " A=""" & fname & """ cat A1 output """ & tfname1 & """ ",0,true
   WshShell.Run PathToPdftk & " """ & tfname1 & """ stamp " & WatermarkPDF & " output """ & tfname & """ ",0,true
End If


If Not fso.FileExists(tfname) Then
MsgBox "There was an error using ""pdftk""!", vbCritical, AppTitle
WScript.Quit
End If

If fso.FileExists(fname) Then
fso.DeleteFile(fname)
End If

If fso.FileExists(tfname1) Then
fso.DeleteFile(tfname1)
End If

If fso.FileExists(tfname2) Then
fso.DeleteFile(tfname2)
End If

If fso.FileExists(tfname3) Then
fso.DeleteFile(tfname3)
End If

If fso.FileExists(tfname4) Then
fso.DeleteFile(tfname4)
End If

If fso.FileExists(tfname5) Then
fso.DeleteFile(tfname5)
End If

fso.MoveFile tfname, fname
Benutzeravatar
heatwalker
5 Sterne
5 Sterne
 
Beiträge: 5356
Registriert: 03.01.2004 - 22:37
Wohnort: Wershofen/Eifel
Geschlecht: Mann
Alter: 57

Re: Kann hier wer VBS scripten??

Beitragvon martin.lindenlauf » 17.03.2014 - 10:07

Hey heatwalker,

ich musste mir jetzt hier einen Account holen und diesen alten Thread noch mal hervorziehen, weil ich einfach DANKE sagen muss: dass Du Deine Lösung hier gepostet hast! Hast mir grade eine Menge Arbeit erspart...: Deine Anpassung des Scrips läuft bei mir, "out of the box", funktioniert für Dokumente die nur eine Seite haben ebenso wie für solche, die viele haben - hey, Danke, dass Du das Ergebnis Deiner Arbeit zur Verfügung gestellt hast! Das ist Gemeinschafts-Geist :spitze:

VG
Martin
martin.lindenlauf
 
Beiträge: 1
Registriert: 17.03.2014 - 10:00
Geschlecht: Nicht spezifiziert

Re: Kann hier wer VBS scripten??

Beitragvon heatwalker » 17.03.2014 - 13:31

*zylinderab*
Gerne doch.
Benutzeravatar
heatwalker
5 Sterne
5 Sterne
 
Beiträge: 5356
Registriert: 03.01.2004 - 22:37
Wohnort: Wershofen/Eifel
Geschlecht: Mann
Alter: 57

Re: Kann hier wer VBS scripten??

Beitragvon maxwell2301 » 03.04.2014 - 11:02

Hey,

Ich versuche das ganze grade bei uns in der Firma als Übergangslösung ein zu richten,
es hat auch soweit alles geklappt...

Leider bekomme ich jetzt jedes mal nach dem ,,erstellen`` eine Fehelermeldung mit dem Inhalt ,, there was an error using pdftk´´

Die PDF geht danach auf, leider ohne den gewünschten Briefbogen...

Hat jemand eine Idee ?

Über schnelle Hilfe würde ich mich sehr freuen:)

Ich füge mal noch mein script an...

PS: wir nutzen seit gestern Win 8.1 Pro


' AddWatermarkToPDF script
' Part of PDFCreator
' License: GPL
' Homepage: http://www.sf.net/projects/pdfcreator
' Version: 1.1.0.0
' Date: September, 1. 2005
' Author: Frank Heindörfer
' Comments: This script needs pdftk.
' For more informations about the freeware pdftk use this link:
' http://www.accesspdf.com

Option Explicit

Const AppTitle = "PDFCreator - AddWatermarkToPDF"
Const PathToPdftk = "c:\PDFCreator\pdftkXp.exe"
Const WatermarkPDF = "WABECOBriefbogensmall.pdf"


Dim objArgs, fname, tfname, fso, WshShell, oExec

Set objArgs = WScript.Arguments

If objArgs.Count = 0 Then
MsgBox "This script needs a parameter!", vbExclamation, AppTitle
WScript.Quit
End If

fname = objArgs(0)

Set fso = CreateObject("Scripting.FileSystemObject")

If Ucase(fso.GetExtensionName(fname)) <> "PDF" Then
MsgBox "This script works only with pdf files!", vbExclamation, AppTitle
WScript.Quit
End If

If Not fso.FileExists(PathToPdftk) Then
MsgBox "You need pdftk for this script!" & vbcrlf & vbcrlf & _
"Please go to http://www.accesspdf.com and download it.", vbExclamation, AppTitle
WScript.Quit
End If

If Not fso.FileExists(WatermarkPDF) Then
MsgBox "Can't find the watermark pdf file!", vbExclamation, AppTitle
WScript.Quit
End If

Set WshShell = CreateObject("WScript.Shell")

tfname = fso.GetTempName
WshShell.Run PathToPdftk & " """ & fname & """ background " & WatermarkPDF & " output """ & tfname & """",0,true

If Not fso.FileExists(tfname) Then
MsgBox "There was an error using ""pdftk""!", vbCritical, AppTitle
WScript.Quit
End If

If fso.FileExists(fname) Then
fso.DeleteFile(fname)
End If

fso.MoveFile tfname, fname
maxwell2301
ein Stern
ein Stern
 
Beiträge: 7
Registriert: 03.04.2014 - 10:59
Geschlecht: Nicht spezifiziert

Nächste

Zurück zu Foren-Übersicht   PC Ecke

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 6 Gäste