Hallo,
eigendlich sollte es ja nicht so schwer sein - dachte ich jedenfalls:
Das folgenden Script druckt aus jeder PDF eine ganz bestimmte Seite aus - in diesem Fall die Seite 5.
Das klappt aus sehr gut
Nun können die PDF jedoch unterschiedlich viele Seiten beinhalten und die Seite die ausgedruckt werdern soll ist in einem Fall ("Monthly") immer die letzte Seite bzw. (bei "Baseline") immer die vorletzte Seite.
Hierzu habe ich ein Script gefunden und getestet, welches die Anzahl der Seiten (Page) ausließt - das geht auch.
Ich möchte das nun zum einen dahin erweitern, daß gleichzeitig nach dem Begriff "Monthly" gesucht wird (muß nur vorhanden sein) um zum anderen an das Script oben den Pagecount (ggf. -1 wenn <> Monthly) zu übergeben.
Während laut meinem Textfile (nur zum Testen) offensichtlich "Page" nicht nur gefunden, sondern auch richtig hochgezählt wird, wird der Begriff "Monthly" nicht gefunden und ich habe immer Baseline in der Ausgabe stehen.
Was läuft falsch?
Und wie bringe ich final die beiden Scripte in eins unter, so daß das Ganze in einem durchläuft?
Gruß
opiWahn
eigendlich sollte es ja nicht so schwer sein - dachte ich jedenfalls:
Das folgenden Script druckt aus jeder PDF eine ganz bestimmte Seite aus - in diesem Fall die Seite 5.
Das klappt aus sehr gut

Visual Basic:
InFile = Wscript.Arguments(0) '' get file to open
set App = CreateObject("AcroExch.App") '' start Adobe Acrobat
'App.Show '' show Acrobat
set AVDoc = CreateObject("AcroExch.AVDoc") '' connect to Ac Viewer
AVDoc.Open InFile,"" '' Open a file into viewer
set PDDoc = AVDoc.GetPDDoc '' Get the Doc opened in the viewer
set JSO = PDDoc.GetJSObject '' Connect to Acrobat JS
'JSO.app.alert("Hi, file is open.Press Ok for printing") '' Display a MsgBox
'//JSO.print("bUI","nStart","nEnd","bSilent","bShrinkToFit","bPrintAsImage","bReverse","bAnnot","bprintParams")
'endPage = jso.numPages-1 ''nEnd zeroBased
set pp = JSO.getPrintParams() ''contact print parameters
pp.printerName = "Brother-DCP-7025" ''set a printername
JSO.print False,5,5,False,True,False,False,False,pp '' print with some options
JSO.closeDoc(True) '' close the printed doc
App.CloseAllDocs '' - or /and - close all docs
App.exit
Nun können die PDF jedoch unterschiedlich viele Seiten beinhalten und die Seite die ausgedruckt werdern soll ist in einem Fall ("Monthly") immer die letzte Seite bzw. (bei "Baseline") immer die vorletzte Seite.
Hierzu habe ich ein Script gefunden und getestet, welches die Anzahl der Seiten (Page) ausließt - das geht auch.
Ich möchte das nun zum einen dahin erweitern, daß gleichzeitig nach dem Begriff "Monthly" gesucht wird (muß nur vorhanden sein) um zum anderen an das Script oben den Pagecount (ggf. -1 wenn <> Monthly) zu übergeben.
Visual Basic:
Option Explicit
Private Function getPdfDocClass(ByVal sPath)
Dim strTStr, found
With CreateObject("Adodb.Stream")
.Open
.Charset = "x-ansi"
.LoadFromFile sPath
strTStr = .ReadText(-1)
End With
With (New RegExp)
.Pattern = "Monthly"
.IgnoreCase = True
.Global = True
found = .test(strTStr)
End With
If found = true then
getPdfDocClass = "Monthly"
else
getPdfDocClass = "Baseline"
end if
End Function
Private Function getPdfPgCnt(ByVal sPath)
Dim strTStr
With CreateObject("Adodb.Stream")
.Open
.Charset = "x-ansi"
.LoadFromFile sPath
strTStr = .ReadText(-1)
End With
With (New RegExp)
.Pattern = "Type\s*/Page[^s]"
.IgnoreCase = True
.Global = True
getPdfPgCnt = .Execute(strTStr).Count
End With
If getPdfPgCnt = 0 Then getPdfPgCnt = 1
End Function
Dim oFso, iFile, pgcnt, directory, base, docclass
directory="C:\PrintPDF\Input"
Set oFso = CreateObject("Scripting.FileSystemObject")
set base=oFso.getFolder(directory)
Set pgcnt = oFso.CreateTextFile("C:\PrintPDF\Results\pagecount.txt", True)
'enumerating pdf files in vbs's base directory
For Each iFile In base.Files
If LCase(oFso.GetExtensionName(iFile)) = "pdf" Then pgcnt.WriteLine(iFile.name &","& getPdfDocClass(iFile) &","& getPdfPgCnt(iFile))
Next
Set oFso = Nothing
Was läuft falsch?
Und wie bringe ich final die beiden Scripte in eins unter, so daß das Ganze in einem durchläuft?
Gruß
opiWahn
Zuletzt bearbeitet: