繁体   English   中英

iText7 Java 示例中使用的 Collections class 的 VB.Net 等价物是什么?

[英]What is VB.Net equivalent of Collections class used in iText7 Java sample?

我尝试编写一个小VB.Net程序来从 PDF 输入页面读取文本和 position。

我在testarea/itext7/ExtractPositionalText.java找到了一个关于 GitHub 的例子

这个例子写在Java我已经迁移了除这一行以外的所有行

return Collections.unmodifiableSet(new LinkedHashSet<>(Collections.singletonList(EventType.RENDER_TEXT))); 

什么是VB.Net等价物?

如何使用 VB.net 替换此 Java 代码?

经过一些测试,我发现这个Java代码可以用不带sCollection代替。

我用以下几行测试了我的提取文本和位置程序

Dim collection As New List(Of EventType)
collection.Add(EventType.RENDER_TEXT)
Return collection

对于那些搜索编写 VB.Net 程序以使用iText7 (版本:7.2.5)从 PDF 文件中提取文本和位置的人,完整代码如下

包含矩形和文本的 class

    Public Class RectAndText
        Public rect As Rectangle 'iText.Kernel.Geom.Rectangle
        Public sText As String

        Public Sub New(rect As Rectangle, text As String)
            Me.rect = rect
            Me.sText = text
        End Sub
    End Class

事件监听器

    Public Class XEventListener
        Implements IEventListener

        Private textWithRectangleList As New List(Of RectAndText)

        Public Function getResultantTextWithPosition() As List(Of RectAndText)
            Return textWithRectangleList
        End Function

        Private Sub RenderText(t As TextRenderInfo)
            If t.GetText().Trim().Length() = 0 Then Return

            Dim ascent As LineSegment = t.GetAscentLine()
            Dim descent As LineSegment = t.GetDescentLine()

            Dim initX As Single = descent.GetStartPoint().Get(0)
            Dim initY As Single = descent.GetStartPoint().Get(1)
            Dim endX As Single = ascent.GetEndPoint().Get(0)
            Dim endY As Single = ascent.GetEndPoint().Get(1)

            Dim rect As Rectangle = New Rectangle(initX, initY, endX - initX, endY - initY)

            textWithRectangleList.Add(New RectAndText(rect, t.GetText()))
        End Sub

        Public Sub EventOccurred(data As IEventData, type As EventType) Implements IEventListener.EventOccurred
            Dim datax As TextRenderInfo = data
            Call RenderText(datax)
        End Sub

        Public Function GetSupportedEvents() As ICollection(Of EventType) Implements IEventListener.GetSupportedEvents
            Dim collection As New List(Of EventType)
            collection.Add(EventType.RENDER_TEXT)
            Return collection
        End Function
    End Class

和主程序中的提取页面代码

    Dim listener As New XEventListener()
    Dim processor As New PdfCanvasProcessor(listener)
    processor.ProcessPageContent(page)

    Dim result = listener.getResultantTextWithPosition()
    For Each x As RectAndText In result
        Console.WriteLine("Text: " & x.sText)    
        Console.WriteLine("Location: " & x.rect.ToString())    
    Next

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM