2015-07-09 2 views
3

Я хочу, чтобы извлечь содержимое таблицы в формате PDF, как например:Как извлечь содержимое таблицы в pdf-файл?

enter image description here

я написал эту Java программу с помощью iText java PDF libray, который может прочитать содержимое PDF файла строка за строкой, но я не знаете, как получить содержимое таблицы

import com.itextpdf.text.pdf.PdfReader; 
import com.itextpdf.text.pdf.parser.PdfTextExtractor; 

public class PDFReader { 

    public static void main(String[] args) { 

     // TODO, add your application code 
     System.out.println("Lecteur PDF"); 
     System.out.println (ReadPDF("D:/test.pdf")); 
    } 
     private static String ReadPDF(String pdf_url) 
    { 
     StringBuilder str=new StringBuilder(); 
     try 
     { 

     PdfReader reader = new PdfReader(pdf_url); 
     int n = reader.getNumberOfPages(); 
     for(int i=1;i<n;i++) 
     { 
      String str2=PdfTextExtractor.getTextFromPage(reader, i); 
      str.append(str2); 
      System.out.println(str); 
     } 
     }catch(Exception err) 
     { 
      err.printStackTrace(); 
     } 
     return String.format("%s", str); 
    } 
} 

это то, что я получаю:

enter image description here

, но это не то, что я хочу, я хочу, чтобы извлечь содержимое строки таблицы построчно и столбец за столбцом, например, сохранить каждую строку в Java массив

первый массив будет содержать: «N ° »,« ДАТА НАБЛЮДЕНИЙ »,« ТЕКСТ »

Второй массив будет содержать:« 029/14 »,« Le 1er sept 2014 remplace AVURNAV ... »,« SETE A compter du lundi 7 juillet 2014 débuteront les trav ... "

Третий массив будет содержать:" 037/14 "," Le 15 октябрь 2014 remune AVURNAV ... "," SETE Du 15 septembre 2014 au 15 juillet 2015, travaux .... "

и так далее

Благодарности

+2

Повторите за мной: «нет стола. Вся плитка, о которой вы думаете, существует в этом PDF-документе, является простой иллюзией». Из порядка текстов, которые вы извлекли, вы можете видеть, что он работает сверху вниз, слева направо. Вам нужны точные координаты для каждого текста и приблизительное значение для каждого столбца и строки. Только тогда вы сможете его восстановить. – usr2564301

+1

@Jongware Поправки к вашей мантре: «Нет таблицы. Вся табличность, о которой вы, возможно, думаете, существует в этом PDF-документе, является простой иллюзией ... * если PDF не является помеченным PDF-файлом. *« К сожалению, OP не предоставляет ссылку на его PDF, чтобы мы могли проверить, помечен ли он. Итак, уважаемый анонимный пользователь: пожалуйста, обновите свой вопрос и сообщите нам, помечен ли ваш PDF-файл или нет. –

+0

@BrunoLowagie: Имеет ли такой помеченный файл теги для строк и столбцов? (Мне еще не нужен этот конкретный рабочий процесс.) Тогда действительно это должно быть возможно. – usr2564301

ответ

1

Вы, возможно, придется определить последовательности начала/конца символов общего поля, чтобы разделить ваши данные в массив, если ваша библиотека PDF не поддерживает извлечение таблиц. Например, первые поля: nnn/nn, второе поле заканчивается nnnn/nn, а третье поле заканчивается, где начинается следующее первое поле.

Это сложная проблема. Мне пришлось использовать основанные на координатах подходы, чтобы справиться с этим раньше, но ваша библиотека в формате pdf может не поддерживать извлечение позиции букв, а также фактического текста.

+1

iText позволяет вам получать координаты x и y всех фрагментов текста и даже всех глифов, но это остается сложной проблемой, как объяснялось в ответе на [исходный вопрос] (http://stackoverflow.com/a/4030714/1622493). –

Смежные вопросы