Как конвертировать PDF-файл в Dataatable - PullRequest
1 голос
/ 11 мая 2011

Есть ли способ конвертировать PDF файл в DataTable?Файл PDF в основном состоит только из таблиц, любая помощь будет высоко оценена.

Ответы [ 2 ]

1 голос
/ 02 мая 2012
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;

 public DataTable ImportPDF(string Filename)
    {
        string strText = string.Empty;
        List<string[]> list = new List<string[]>();
        string[] PdfData = null;
        try
        {
            PdfReader reader = new PdfReader((string)Filename);
            for (int page = 1; page <= reader.NumberOfPages; page++)
            {
                ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.LocationTextExtractionStrategy();
                String cipherText = PdfTextExtractor.GetTextFromPage(reader, page, its);
                cipherText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(cipherText)));
                strText = strText + "\n" + cipherText;
                PdfData = strText.Split('\n');

            }
            reader.Close();
        }
        catch (Exception ex)
        {
        }

        List<string> temp = PdfData.ToList();
        temp.RemoveAt(0);
        list = temp.ConvertAll<string[]>(x => x.Split(' ').ToArray());
        List<string> columns = list.FirstOrDefault().ToList();
        DataTable dtTemp = new DataTable();
        columns.All(x => { dtTemp.Columns.Add(new DataColumn(x)); return true; });
        list.All(x => { dtTemp.Rows.Add(dtTemp.NewRow().ItemArray = x); return true; });
        return dtTemp;
    }
1 голос
/ 11 мая 2011

Если PDF-файл содержит помеченное содержимое (вы можете найти его в статье моего блога http://www.jpedal.org/PDFblog/2010/09/the-easy-way-to-discover-if-a-pdf-file-contains-structured-content/), вы можете извлечь его из PDF-файла. В противном случае вам нужно будет извлечь текст и попытаться угадать структуру .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...