Получить номера страниц из PDF-закладок? - PullRequest
0 голосов
/ 02 марта 2020

Я написал код в VBA для печати указанных номеров страниц документа PDF. Я пытаюсь найти способ получить номер страницы и имя каждой закладки PDF, чтобы я мог вставить данные в Excel и распечатать. У меня есть несколько файлов PDF, в которых сам номер отчета является закладкой. Я не смог получить доступ к закладке через VBA. Однако я смог найти документы и вернуть номер страницы в Excel. Это занимает много времени, потому что все PDF-файлы сохраняются в виде изображения и должны быть преобразованы. Я очень хорошо разбираюсь в VBA, но у меня нет опыта работы со скриптом Java. Я также попытался разбить файлы по закладке Top Level, но безуспешно. Файлы сохраняются как неправильные имена закладок. Кто-нибудь может предложить решение?

Public Sub PrintPDFPartial(strFileName As String, intBeginPage As Integer, 
intEndPage As Integer)

'This works but requires Adobe Acrobat Standard
Dim AcroApp As AcroApp
Dim AcroAVDoc As AcroAVDoc
Dim AcroPDDoc As AcroPDDoc
Set AcroApp = CreateObject("AcroExch.App")
Set AcroAVDoc = CreateObject("AcroExch.AVDoc")
Const POSTSCRIPT_LEVEL = 2
If AcroAVDoc.Open(strFileName, vbNull) <> True Then
    Exit Sub
End If
Set AcroAVDoc = AcroApp.GetActiveDoc
Set AcroPDDoc = AcroAVDoc.GetPDDoc
AcroAVDoc.printPages intBeginPage - 1, intEndPage - 1, POSTSCRIPT_LEVEL, 
True, False
AcroAVDoc.Close True
AcroApp.Exit
Set AcroDoc = Nothing
Set AcroApp = Nothing

End Sub


Sub Printpartial()

Dim strFileName As String
Dim intBeginPage As Integer, intEndPage As Integer, pPage As Integer
weld = Range("Weld").Column
lrow = Cells(Rows.Count, weld).End(xlUp).Row
For i = 5 To lrow

search = Cells(i, weld)
FileType = Range("FileType")
report = Range("SearchFor").Column
iName = Cells(i, report)
Filepath = Range("File_Path")
pPage = Range("N" & i)

strFileName = (Filepath & iName & "." & FileType)
intBeginPage = pPage

intEndPage = pPage

Call PrintPDFPartial(strFileName, pPage, pPage)
Next i
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...