Я анализирую .pdf с использованием библиотеки acrobat.tlb
Слова с переносами переносятся по новым строкам с удалением дефисов.
например.
ABC-123-XXX-987
Разбирает как:
ABC
123
XXX
987
Если я анализирую текст с помощью iTextSharp, он анализирует всю строку, как показано в файле, и это то поведение, которое мне нужно. Однако мне нужно выделить эти строки (серийные номера) в формате .pdf, а iTextSharp не размещает выделение в правильном месте ... отсюда acrobat.tlb
Я использую этот код, отсюда: http://www.vbforums.com/showthread.php?561501-RESOLVED-2003-How-to-highlight-text-in-pdf
' filey = "*your full file name including directory here*"
AcroExchApp = CreateObject("AcroExch.App")
AcroExchAVDoc = CreateObject("AcroExch.AVDoc")
' Open the [strfiley] pdf file
AcroExchAVDoc.Open(filey, "")
' Get the PDDoc associated with the open AVDoc
AcroExchPDDoc = AcroExchAVDoc.GetPDDoc
sustext = "accessorizes"
suktext = "accessorises"
' get JavaScript Object
' note jso is related to PDDoc of a PDF,
jso = AcroExchPDDoc.GetJSObject
' count
nCount = 0
nCount1 = 0
gbStop = False
bUSCnt = False
bUKCnt = False
' search for the text
If Not jso Is Nothing Then
' total number of pages
nPages = jso.numpages
' Go through pages
For i = 0 To nPages - 1
' check each word in a page
nWords = jso.getPageNumWords(i)
For j = 0 To nWords - 1
' get a word
word = Trim(CStr(jso.getPageNthWord(i, j)))
'If VarType(word) = VariantType.String Then
If word <> "" Then
' compare the word with what the user wants
If Trim(sustext) <> "" Then
result = StrComp(word, sustext, vbTextCompare)
' if same
If result = 0 Then
nCount = nCount + 1
If bUSCnt = False Then
iUSCnt = iUSCnt + 1
bUSCnt = True
End If
End If
End If
If suktext<> "" Then
result1 = StrComp(word, suktext, vbTextCompare)
' if same
If result1 = 0 Then
nCount1 = nCount1 + 1
If bUKCnt = False Then
iUKCnt = iUKCnt + 1
bUKCnt = True
End If
End If
End If
End If
Next j
Next i
jso = Nothing
End If
Код выполняет выделение текста, но цикл FOR с переменной 'word' разбивает дефисную строку на составные части.
For i = 0 To nPages - 1
' check each word in a page
nWords = jso.getPageNumWords(i)
For j = 0 To nWords - 1
' get a word
word = Trim(CStr(jso.getPageNthWord(i, j)))
Кто-нибудь знает, как поддерживать всю строку, используя acrobat.tlb? Мои довольно обширные поиски вычеркнули пробел.