Quiero extraer el contenido de los campos de texto de los archivos pdf que tienen campos de texto que necesito incorporar a mi proyecto de Winforms. Al buscar, encontré una referencia a iTextSharp, pero luego vi que se reemplaza con iText7, pero todo lo que leo se refiere solo a que se usa en C #. Mi proyecto winforms es vb. Cualquier sugerencia sobre cuál sería mi mejor opción para lograr obtener esos datos en mi proyecto es muy apreciada.
Si está disponible para .NET, entonces está disponible para todos los lenguajes de .NET. Esa es una de las cosas útiles sobre la forma en que funciona .NET Framework: no importa en qué lenguaje de programación se escribió una biblioteca o proyecto en particular. Una vez que se compila en una DLL de ensamblaje .NET, se puede usar desde cualquier otro .NET idioma independientemente.
Si, por ejemplo, iTextSharp o iText7 están disponibles como paquete Nuget (que creo que lo están), entonces es especialmente simple: simplemente puede instalar el paquete en su proyecto VB.NET y usarlo.
A menudo puede encontrar que los ejemplos de uso están escritos en un idioma específico, pero eso no significa que no pueda hacer exactamente las mismas instancias de clase, llamadas a métodos, etc. usando un idioma diferente. Si tiene dificultades para traducir muestras de código de un idioma a otro, hay convertidores de código automáticos gratuitos disponibles en línea (especialmente entre C# y VB.NET y viceversa) que generalmente harán el 90-100% del trabajo de conversión por usted.
Para extraer texto de un archivo PDF usando itext7 , intente lo siguiente:
Requisito previo : descargar/instalar el paquete itext7
Agregue las siguientes declaraciones de Importaciones:
Imports iText.Kernel.Pdf Imports iText.Kernel.Pdf.Canvas.Parser.Listener Imports iText.Kernel.Pdf.Canvas.Parser.PdfTextExtractorObtenerTextoDePdf :
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 FunctionEl código para GetTextFromPdf está adaptado de aquí .
Actualizar :
El siguiente código muestra cómo leer los nombres de campo y los valores de campo de un AcroForm en un documento PDF:
Agregue las siguientes declaraciones de Importaciones:
Imports iText.Forms Imports iText.Kernel.PdfObtenerTextoDePdfFields
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**Nota: El código para GetTextFromPdfFields está adaptado de aquí .