iText7 在 VB.Net 中可用还是仅在 C# 中可用
Is iText7 available in VB.Net or only C#
我想从 pdf 文件中提取文本字段内容,这些文件具有我需要引入我的 Winforms 项目的文本字段。通过搜索,我找到了对 iTextSharp 的引用,但随后发现它已被 iText7 取代,但我阅读的所有内容都仅涉及它在 C# 中的使用。我的 winforms 项目是 vb。
非常感谢任何关于将数据导入我的项目的最佳选择的指示
如果它适用于 .NET,那么它适用于所有 .NET 语言。这是 .NET Framework 工作方式的有用之处之一 - 特定库或项目是用哪种编程语言编写的并不重要。一旦它被编译为 .NET 程序集 DLL,它就可以从任何其他 .NET 使用语言无关。
例如,如果 iTextSharp 或 iText7 可作为 Nuget 包使用(我相信它们是),那么它特别简单 - 您只需将包安装到您的 VB.NET 项目中并使用它。
您可能经常会发现使用示例是用一种特定语言编写的,但这并不意味着您不能使用不同的语言制作完全相同的 class 实例、方法调用等。如果您难以将代码示例从一种语言翻译成另一种语言,可以在线使用免费的自动代码转换器(尤其是在 C# 和 VB.NET 之间,反之亦然),它们通常可以为您完成 90-100% 的转换工作。
要使用 itext7
从 PDF 文件中提取文本,请尝试以下操作:
先决条件:Download/install NuGet 包itext7
添加以下导入语句:
Imports iText.Kernel.Pdf
Imports iText.Kernel.Pdf.Canvas.Parser.Listener
Imports iText.Kernel.Pdf.Canvas.Parser.PdfTextExtractor
GetTextFromPdf:
Public Function GetTextFromPdf(filename As String) As String
Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder()
Using doc As PdfDocument = New PdfDocument(New PdfReader(filename))
'Dim strategy As LocationTextExtractionStrategy = New LocationTextExtractionStrategy()
For i As Integer = 1 To doc.GetNumberOfPages() Step 1
Dim page = doc.GetPage(i)
'Dim text = iText.Kernel.Pdf.Canvas.Parser.PdfTextExtractor.GetTextFromPage(page, strategy)
Dim text = GetTextFromPage(page)
sb.AppendLine(text)
Next
End Using
Return sb.ToString()
End Function
GetTextFromPdf 的代码改编自here。
更新:
下面的代码显示了如何从 Pdf 文档中的 AcroForm 读取字段名称和字段值:
添加以下导入语句:
Imports iText.Forms
Imports iText.Kernel.Pdf
GetTextFromPdfFields
Public Function GetTextFromPdfFields(filename As String) As String
Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder()
'create new instance
Using doc As PdfDocument = New PdfDocument(New PdfReader(filename))
'get AcroForm from document
Dim form As PdfAcroForm = PdfAcroForm.GetAcroForm(doc, True)
'get form fields
Dim fieldDict As IDictionary(Of String, Fields.PdfFormField) = form.GetFormFields()
'loop through form fields
For Each kvp As KeyValuePair(Of String, Fields.PdfFormField) In fieldDict
Dim type As PdfName = form.GetField(kvp.Key).GetFormType()
Dim fieldName As PdfString = form.GetField(kvp.Key).GetFieldName()
Dim fieldValue As String = form.GetField(kvp.Key).GetValueAsString()
If fieldName IsNot Nothing Then
'append data to instance of StringBuilder
sb.AppendLine("Type: " & type.ToString() & " FieldName: " & fieldName.ToString() & " Value: " & fieldValue)
End If
Next
End Using
Return sb.ToString()
End Function
**注意:GetTextFromPdfFields 的代码改编自。
我想从 pdf 文件中提取文本字段内容,这些文件具有我需要引入我的 Winforms 项目的文本字段。通过搜索,我找到了对 iTextSharp 的引用,但随后发现它已被 iText7 取代,但我阅读的所有内容都仅涉及它在 C# 中的使用。我的 winforms 项目是 vb。 非常感谢任何关于将数据导入我的项目的最佳选择的指示
如果它适用于 .NET,那么它适用于所有 .NET 语言。这是 .NET Framework 工作方式的有用之处之一 - 特定库或项目是用哪种编程语言编写的并不重要。一旦它被编译为 .NET 程序集 DLL,它就可以从任何其他 .NET 使用语言无关。
例如,如果 iTextSharp 或 iText7 可作为 Nuget 包使用(我相信它们是),那么它特别简单 - 您只需将包安装到您的 VB.NET 项目中并使用它。
您可能经常会发现使用示例是用一种特定语言编写的,但这并不意味着您不能使用不同的语言制作完全相同的 class 实例、方法调用等。如果您难以将代码示例从一种语言翻译成另一种语言,可以在线使用免费的自动代码转换器(尤其是在 C# 和 VB.NET 之间,反之亦然),它们通常可以为您完成 90-100% 的转换工作。
要使用 itext7
从 PDF 文件中提取文本,请尝试以下操作:
先决条件:Download/install NuGet 包itext7
添加以下导入语句:
Imports iText.Kernel.Pdf
Imports iText.Kernel.Pdf.Canvas.Parser.Listener
Imports iText.Kernel.Pdf.Canvas.Parser.PdfTextExtractor
GetTextFromPdf:
Public Function GetTextFromPdf(filename As String) As String
Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder()
Using doc As PdfDocument = New PdfDocument(New PdfReader(filename))
'Dim strategy As LocationTextExtractionStrategy = New LocationTextExtractionStrategy()
For i As Integer = 1 To doc.GetNumberOfPages() Step 1
Dim page = doc.GetPage(i)
'Dim text = iText.Kernel.Pdf.Canvas.Parser.PdfTextExtractor.GetTextFromPage(page, strategy)
Dim text = GetTextFromPage(page)
sb.AppendLine(text)
Next
End Using
Return sb.ToString()
End Function
GetTextFromPdf 的代码改编自here。
更新:
下面的代码显示了如何从 Pdf 文档中的 AcroForm 读取字段名称和字段值:
添加以下导入语句:
Imports iText.Forms
Imports iText.Kernel.Pdf
GetTextFromPdfFields
Public Function GetTextFromPdfFields(filename As String) As String
Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder()
'create new instance
Using doc As PdfDocument = New PdfDocument(New PdfReader(filename))
'get AcroForm from document
Dim form As PdfAcroForm = PdfAcroForm.GetAcroForm(doc, True)
'get form fields
Dim fieldDict As IDictionary(Of String, Fields.PdfFormField) = form.GetFormFields()
'loop through form fields
For Each kvp As KeyValuePair(Of String, Fields.PdfFormField) In fieldDict
Dim type As PdfName = form.GetField(kvp.Key).GetFormType()
Dim fieldName As PdfString = form.GetField(kvp.Key).GetFieldName()
Dim fieldValue As String = form.GetField(kvp.Key).GetValueAsString()
If fieldName IsNot Nothing Then
'append data to instance of StringBuilder
sb.AppendLine("Type: " & type.ToString() & " FieldName: " & fieldName.ToString() & " Value: " & fieldValue)
End If
Next
End Using
Return sb.ToString()
End Function
**注意:GetTextFromPdfFields 的代码改编自