[英]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
代码可以用不带s
的Collection
代替。
我用以下几行测试了我的提取文本和位置程序
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.