Leer el contenido de un PDF

117 views
Skip to first unread message

Cristian Novoa

unread,
Sep 3, 2025, 1:53:47 PM (4 days ago) Sep 3
to Comunidad de Visual Foxpro en Español
Estimados, ¿ alguien ha tenido que leer el contenido de un PDF ?. Tengo que rescatar el detalle de unas facturas, y no he podido hacerlo.

¿ Habrá alguna herramienta de terceros ?.

Saludos y gracias.

Zarlu

unread,
Sep 3, 2025, 2:23:50 PM (4 days ago) Sep 3
to Comunidad de Visual Foxpro en Español
Buenas tardes novoacar!

De aquí de la comunidad

Suerte
zarlu
Chetumal, Quintana Roo, México

Carlos Ortiz Mestre

unread,
Sep 4, 2025, 7:44:34 AM (3 days ago) Sep 4
to publice...@googlegroups.com
Por qué no pruebas pdf2txt u otra app sencilla de consola que transcriba el pdf a un txt

--
Blog de la Comunidad Visual FoxPro en Español http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/publicesvfoxpro/9ac6d4cd-dd22-43c8-95d7-8df8b7d2d056n%40googlegroups.com.

Carlos Ortiz Mestre

unread,
Sep 4, 2025, 7:49:30 AM (3 days ago) Sep 4
to publice...@googlegroups.com
La puedes ejecutar desde VFP pasándole el nombre del archivo pdf en la línea comando, así de fácil

Eric Zbrun

unread,
Sep 4, 2025, 8:11:06 AM (3 days ago) Sep 4
to Comunidad de Visual Foxpro en Español
Hola Gente de FOX!!
Hace años que uso itextsharp.dll de https://www.nuget.org/packages/itextsharp/ lo hice con una pequeña app de consola en C# y te pasa de PDF a TXT.

Saludos.
Eric!

Zarlu

unread,
Sep 4, 2025, 9:11:19 AM (3 days ago) Sep 4
to Comunidad de Visual Foxpro en Español
Buenos días Eric!

Algunos ejemplo de sintaxis?. Por favor

Suerte
zarlu
Chetumal, Quintana Roo, México

Eric Zbrun

unread,
Sep 4, 2025, 9:31:48 AM (3 days ago) Sep 4
to publice...@googlegroups.com
Hola!
El código que tengo está bajo licencia de la empresa donde trabajo pero un ejemplo de IA sería algo así.

instalar Install-Package iTextSharp

*---Codigo----
using System;
using System.IO;
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;

class Program
{
    static void Main(string[] args)
    {
        // Ruta del PDF de entrada
        string pdfPath = @"C:\ruta\entrada.pdf";
        // Ruta del TXT de salida
        string txtPath = @"C:\ruta\salida.txt";

        try
        {
            // Abrimos el PDF
            using (PdfReader reader = new PdfReader(pdfPath))
            {
                using (StreamWriter sw = new StreamWriter(txtPath))
                {
                    for (int i = 1; i <= reader.NumberOfPages; i++)
                    {
                        // Extraemos texto página por página
                        string pageText = PdfTextExtractor.GetTextFromPage(reader, i, new LocationTextExtractionStrategy());

                        // Normalizamos saltos de línea
                        pageText = pageText.Replace("\n", Environment.NewLine);

                        sw.WriteLine(pageText);
                    }
                }
            }

            Console.WriteLine("Conversión completada. Archivo guardado en: " + txtPath);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}

Ahora si es una imagen en PDF tenes otra solucion  
Install-Package Tesseract
instalar Install-Package iTextSharp


using System;
using System.IO;
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using Tesseract;
using PdfiumViewer; // Necesario para renderizar páginas PDF como imágenes

class Program
{
    static void Main(string[] args)
    {
        string pdfPath = @"C:\ruta\entrada.pdf";
        string txtPath = @"C:\ruta\salida.txt";

        try
        {
            using (StreamWriter sw = new StreamWriter(txtPath))
            {
                using (PdfReader reader = new PdfReader(pdfPath))
                {
                    for (int i = 1; i <= reader.NumberOfPages; i++)
                    {
                        string pageText = PdfTextExtractor.GetTextFromPage(reader, i, new LocationTextExtractionStrategy());

                        if (string.IsNullOrWhiteSpace(pageText))
                        {
                            // Si no hay texto, hacemos OCR sobre la página
                            using (var pdfDoc = PdfDocument.Load(pdfPath))
                            {
                                using (var image = pdfDoc.Render(i - 1, 300, 300, true))
                                {
                                    string tempImage = Path.GetTempFileName() + ".png";
                                    image.Save(tempImage);

                                    // OCR con Tesseract
                                    using (var engine = new TesseractEngine(@"./tessdata", "spa", EngineMode.Default))
                                    {
                                        using (var img = Pix.LoadFromFile(tempImage))
                                        {
                                            using (var page = engine.Process(img))
                                            {
                                                pageText = page.GetText();
                                            }
                                        }
                                    }

                                    File.Delete(tempImage);
                                }
                            }
                        }

                        pageText = pageText.Replace("\n", Environment.NewLine);
                        sw.WriteLine(pageText);
                    }
                }
            }

            Console.WriteLine("Conversión completada. Archivo guardado en: " + txtPath);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}


Saludos,
Eric!


--
Blog de la Comunidad Visual FoxPro en Español http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito a un tema del grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/publicesvfoxpro/Q4xeEdudEfY/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/publicesvfoxpro/cec6705d-afc3-48f8-a81a-f7c16af4dcd5n%40googlegroups.com.


--
Saludos.
Eric!
Reply all
Reply to author
Forward
0 new messages