2013-04-02 4 views
1

Я пытаюсь преобразовать PDF в файл csv. PDF-файл имеет данные в табличном формате с первой строкой в ​​виде заголовка. Я достиг уровня, на котором я могу извлечь текст из ячейки, сравнить исходный текст в таблице и обнаружить новую строку, но мне нужно сравнить границы таблицы, чтобы обнаружить начало таблицы. Я не знаю, как обнаружить и сравнить строки в PDF. Может кто-нибудь мне помочь?Как обнаружить начало таблицы в itextSharp?

Спасибо !!!

ответ

4

Как вы видели (надеюсь), в PDF-файлах нет концепции таблиц, только текст размещается в определенных местах и ​​линиях, нарисованных вокруг них. Внутренняя связь между текстом и строками отсутствует. Это очень важно понять.

Зная это, если у всех ячеек достаточно отступов, вы можете искать промежутки между достаточно большими символами, такими как ширина 3 или более пробелов. Если ячейки не имеют достаточного расстояния, это, к сожалению, может сломаться.

Вы также можете посмотреть каждую строку в PDF и попытаться выяснить, что представляет собой ваши «таблицы». См. this answer for how to walk every token on a page, чтобы узнать, что рисуется.

+0

+1; Я согласен с общим описанием. Что касается способа проверки содержимого страницы, я бы предложил использовать пакет анализатора iText вместо ручного осмотра содержимого страницы. – mkl

+0

Есть ли парсер для фигур/линий в iText? –

+0

Пока нет, но классы пакета парсеров достаточно просты, чтобы также предоставлять информацию о путях. Более важно, однако, классы парсеров предоставляют довольно точную информацию о ширинах и позициях текста для RenderListeners. Чтобы получить одну и ту же информацию вручную, необходимо будет принять во внимание некоторые возможные операторы. – mkl

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