Я пытаюсь получить количество страниц в документе PDF.Некоторые из моих PDF-файлов создаются в Word (сохраняются в формате PDF), некоторые из них ксерокопируются в каталог (не уверен, имеет ли это значение).
После нескольких часов исследований я пришел к выводу, что этопроще сказать, чем сделать. Количество страниц редко возвращается, давая мне правильное количество страниц , хотя в большинстве PDF-файлов действительно есть /Count
внутри двоичного кода.
Например, я использовал следующеекод;он должен открыть документ в двоичном режиме, найти /Count
или /N
и получить рядом с ним номер, который должен подсчитать количество страниц.
Public Sub pagecount(sfilename As String)
On Error GoTo a
Dim nFileNum As Integer
Dim s As String
Dim c As Integer
Dim pos, pos1 As Integer
pos = 0
pos1 = 0
c = 0
' Get an available file number from the system
nFileNum = FreeFile
'OPEN the PDF file in Binary mode
Open sfilename For Binary Lock Read Write As #nFileNum
' Get the data from the file
Do Until EOF(nFileNum)
Input #1, s
c = c + 1
If c <= 10 Then
pos = InStr(s, "/N")
End If
pos1 = InStr(s, "/count")
If pos > 0 Or pos1 > 0 Then
Close #nFileNum
s = Trim(Mid(s, pos, 10))
s = Replace(s, "/N", "")
s = Replace(s, "/count", "")
s = Replace(s, " ", "")
s = Replace(s, "/", "")
For i = 65 To 125
s = Replace(s, Chr(i), "")
Next
pages = Val(Trim(s))
If pages < 0 Then
pages = 1
End If
Close #nFileNum
Exit Sub
End If
'imp only 1000 lines searches
If c >= 1000 Then
GoTo a
End If
Loop
Close #nFileNum
Exit Sub
a:
Close #nFileNum
pages = 1
Exit Sub
End Sub
Однако большинствовремя, по умолчанию это страницы = 1 (под :).Я также обновил его до 10000, чтобы быть уверенным, что он попадает в строку /Count
, но все равно не дает правильного подсчета.
If c >= 10000 Then
GoTo a
End If
Я также сталкивался с этим reddit
Есть ли другой способ сделать это, что я могу использовать в своем приложении?
Любая помощь приветствуется.
Справочная информация:
Это для устаревшего приложения vb6, где я пытаюсь позволить пользователю манипулировать файлами PDF.Я добавил ListBox, который отображает все документы PDF в определенном каталоге.Когда пользователь дважды щелкает по любому из файлов, я отображаю его в компоненте WebBrowser внутри моего приложения.
РЕДАКТИРОВАТЬ: Изображение, содержащее строку BinaryMode Count для 3 различных документов:
Я дважды проверил количество страниц, и / Count отображает правильное количество страниц для каждого из трех документов.