абзац pdf или блоки текстовых позиций - PullRequest
0 голосов
/ 15 апреля 2009

Я хочу получить прямоугольники, которые составляют абзацы и / или блоки текста на странице PDF.

Я посмотрел на iTextSharp и DataLogics.

Лучшее, что я смог сделать, - это найти отдельные слова. Однако мне нужно знать, находятся ли слова в одном и том же блоке текста.

Я использую C #. У кого-нибудь есть идеи?

Ответы [ 3 ]

1 голос
/ 16 апреля 2009

Если не существует структурированного PDF, его не будет. PDF - это набор команд drawString в разных местах - здесь нет абзацев или пробелов. Вы должны решить это из текстовых позиций.

0 голосов
/ 05 января 2012

Извлеките все координаты каждого слова на странице, затем попытайтесь сгруппировать их.

Первое, что нужно сделать, это сгруппировать в строки. Чтобы сделать это, вы хотите перебрать все слова со всеми словами порядка и сгруппировать те, у которых y0 меньше, чем y1 другого, а y1 больше, чем y0 другого. Это строки.

Тогда вам нужно сгруппировать строки в абзацы. Положение x начала строки должно быть в пределах 1/25 ширины страницы от другой. И расстояние между координатами y линии должно быть меньше высоты линии. Это параграфы.

0 голосов
/ 15 апреля 2009

Это на Java, но оно касается получения содержимого из PDF, а затем получения значения из индекса в содержимом.

Я не уверен, но вы могли бы добиться чего-то похожего в C #. Получить содержимое и распечатать его.

//create a new reader from the source file
PdfReader reader = new PdfReader(fileName);
//create the file array
RandomAccessFileOrArray raf = new RandomAccessFileOrArray(fileName);
//get the content of the pdf reader (which is the source file)
byte bContent [] = reader.getPageContent(1,raf);
ByteArrayOutputStream bs = new ByteArrayOutputStream();
bs.write(bContent);
//create a string of the contents of the page in order to get the data needed
String contentOf1099 = bs.toString();
if(debug)
{
    System.err.println("contentOf1099 = "+contentOf1099);
}
//get the value based off an index
String value = contentOf1099.substring(contentOf1099.indexOf((",contentOf1099.indexOf("155 664 Td"))+1,contentOf1099.indexOf("(",contentOf1099.indexOf("155 664 Td "))+12);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...