123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- Imports ComPDFKit.Import
- Imports ComPDFKit.PDFAnnotation
- Imports ComPDFKit.PDFDocument
- Imports ComPDFKit.PDFPage
- Imports System
- Imports System.Collections.Generic
- Imports System.IO
- Imports System.Windows
- Module TextSearchTest
- Private parentPath As String =
- Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(Directory.GetCurrentDirectory())))
- Private outputPath As String = Path.Combine(parentPath, "Output", "VB")
- Sub Main(args As String())
- ' Preparation work
- Console.WriteLine("Running text search test sample..." & vbCrLf)
- If Not Directory.Exists(outputPath) Then
- Directory.CreateDirectory(outputPath)
- End If
- SDKLicenseHelper.LicenseVerify()
- ' Sample 1: Search text
- Dim document As CPDFDocument = CPDFDocument.InitWithFilePath("Text.pdf")
- SearchText(document)
- document.Release()
- Console.WriteLine("--------------------")
- Console.WriteLine("Done")
- Console.WriteLine("--------------------")
- Console.ReadLine()
- End Sub
- ' Search for keywords in the current page and record the search results.
- Private Sub SearchForPage(page As CPDFPage, searchKeywords As String, options As C_Search_Options, ByRef rects As List(Of Rect), ByRef strings As List(Of String))
- rects = New List(Of Rect)()
- strings = New List(Of String)()
- Dim findIndex As Integer = 0
- Dim textPage As CPDFTextPage = page.GetTextPage()
- Dim searcher As New CPDFTextSearcher()
- If searcher.FindStart(textPage, searchKeywords, options, 0) Then
- Dim textRect As New CRect()
- Dim textContent As String = ""
- While searcher.FindNext(page, textPage, textRect, textContent, findIndex)
- strings.Add(textContent)
- rects.Add(New Rect(textRect.left, textRect.top, textRect.width(), textRect.height()))
- End While
- End If
- End Sub
- ' Highlight the first result
- Private Function HighlightTheFirstResult(page As CPDFPage, rect As Rect) As Boolean
- Dim cRectList As New List(Of CRect)()
- cRectList.Add(New CRect(CSng(rect.Left), CSng(rect.Top), CSng(rect.Right), CSng(rect.Bottom)))
- Dim annotation As CPDFHighlightAnnotation = CType(page.CreateAnnot(C_ANNOTATION_TYPE.C_ANNOTATION_HIGHLIGHT), CPDFHighlightAnnotation)
- Dim color As Byte() = {0, 255, 0}
- annotation.SetColor(color)
- annotation.SetTransparency(120)
- annotation.SetQuardRects(cRectList)
- annotation.UpdateAp()
- Return True
- End Function
- ' Search PDF keywords on the first page of the article,
- ' after the search is completed,
- ' highlight the first searched keyword and save it
- Private Function SearchText(document As CPDFDocument) As Boolean
- Dim page As CPDFPage = document.PageAtIndex(0)
- 'rects: The collection of locales where keywords are located.
- Dim rects As New List(Of Rect)()
- 'strings: The full text of the keyword's area
- Dim strings As New List(Of String)()
- 'Search for single page
- SearchForPage(page, "PDF", C_Search_Options.Search_Case_Insensitive, rects, strings)
- Console.WriteLine("The pdf have {0} results", rects.Count)
- Console.WriteLine("Search finished, now highlight the first result. ")
- 'Highlight the first result
- HighlightTheFirstResult(page, rects(0))
- Dim filePath As String = Path.Combine(outputPath, "HighlightFirstTest.pdf")
- If Not document.WriteToFilePath(filePath) Then
- Return False
- End If
- Console.WriteLine("Browse the changed file in " & filePath)
- Return True
- End Function
- End Module
|