In VBS gibt's keinen Binärmodus.
Ich hab das Programm testweise nach VB6 (VBA) konvertiert.
Da hast du keine Probleme mit CHR(0).
Option Explicit
Sub test()
Dim FF As Integer
Dim abmessungen_start As Long
Dim abmessungen_start1 As Long
Dim abmessungen_start2 As Long
Dim abmessungen_end As Long
Dim laenge_start_to_end As Long
Dim abmessungen_einzeln As Long
Dim i As Long
Dim Start_x As Double, Start_y As Double
Dim Ende_x As Double, Ende_y As Double
Dim abmessungen_breite As Double, abmessungen_hoehe As Double
Dim msg As String, t As String
Dim abmessungen As String
Dim abmessungen_splitten() As String
Dim strText As String
Dim DateiName As String
' Variable Dateiname setzen
DateiName = "D:\U70-1F300.pdf" '"C:\Test\1143522_RB~0.pdf"
' Datei öffnen/auslesen
FF = FreeFile
Open DateiName For Binary As #FF
strText = Space$(LOF(FF))
Get #FF, , strText
Close
' PDF nach einem String durchsuchen und den Startpunkt ermitteln
abmessungen_start1 = InStr(strText, "MediaBox[")
abmessungen_start2 = InStr(strText, "MediaBox [")
' tatsächlichen Startpunkt in Abhängigkeit von start1 und start2 ermitteln
If abmessungen_start1 Then
abmessungen_start = abmessungen_start1 + 9
ElseIf abmessungen_start2 Then
abmessungen_start = abmessungen_start2 + 9
Else
MsgBox ("Fehler")
Exit Sub
End If
' Position an der die abschliessende eckige Klammer steht
abmessungen_end = InStr(abmessungen_start, strText, "]", 1) + 1
' Zeichenlaenge der Werte innerhalb der eckigen Klammern
laenge_start_to_end = abmessungen_end - abmessungen_start - 1
' Bereich in dem die Werte der PDF-Groesse in den eckigen Klammern steht
abmessungen = Mid$(strText, abmessungen_start, laenge_start_to_end)
' Bereich zerlegen in einzelne Werte
abmessungen_splitten = Split(abmessungen, " ")
Start_x = CDbl(abmessungen_splitten(0))
Start_y = CDbl(abmessungen_splitten(1))
Ende_x = CDbl(abmessungen_splitten(2))
Ende_y = CDbl(abmessungen_splitten(3))
' Nachkommastellen bei Abmessungen in mm entfernen (z.B. 210,06 mm = 210 mm)
abmessungen_breite = Int((Ende_x - Start_x) / 2.834)
abmessungen_hoehe = Int((Ende_y - Start_y) / 2.834)
msg = "Abmessungen:" & vbLf & _
"x = " & CStr(Start_x) & vbLf & _
"y = " & CStr(Start_y) & vbLf & _
"Höhe = " & CStr(abmessungen_hoehe) & vbLf & _
"Breite = " & CStr(abmessungen_breite)
t = MsgBox(msg, 64)
End Sub 0 |