PDF декодировать и найти полезные данные в нем - PullRequest
0 голосов
/ 18 сентября 2010

Я пытаюсь декодировать файл PDF в полезные данные, но у меня возникли некоторые проблемы с системой координат.

Во-первых, данные, которые я использую: http://pastebin.com/h4MFiSbd (я уже расшифровал их)

Я пытаюсь получить координаты серых квадратов.

Моя проблема в том, что я нашел координаты текста:

0 1.00057 -1 0 65.1595 353.15 Tm
[(2)5.81146(.)2.90771(4)5.81146( )2.90771(t)2.90771(i)222]TJ 

65.1595 = y
353.15 = x

Но проблема в координатах квадратов. Я нашел цвет квадратов плюс координаты:

0.753906 0.753906 0.753906 rg
3039 200.914 817.996 1329 re

В PDF-справке говорится, что re использует x,y,width,height, но, как вы можете видеть, 3039 намного больше, чем 353.15. Я также видел, что Tm использует матрицу [[a, b, 0], [c, d, 0], [e, f, 1]]

Другая проблема в том, что эти прямоугольники как-то не так:

470.996 2934.91 1674 1329 re ---> beveilig.tech.pr
1327 1567.91 2102 1329 re  ---> beveilig.tech.th
1327 4301.91 817.996 1329 re ---> bbc ti
2183 4301.91 817.996 1329 re ---> b&o practicum
3039 200.914 817.996 1329 re ---> b&o theorie

Я собрал все координаты из цветных квадратов 0,753906, 0,753906, 0,753906, с названием текста под ним. Как видно из этих координат, все блоки имеют одинаковую высоту.

Может кто-нибудь помочь мне?

Ответы [ 2 ]

3 голосов
/ 19 сентября 2010

Причина в первой строке - «0,12 0 0 0,12 0 0 см».Эта операция устанавливает матрицу преобразования и (упрощенно) масштабирует координаты x, y во всех последующих операциях на 0,12.Таким образом, 3039 действительно = 3039 * 0,12 = 364,68.

0 голосов
/ 20 сентября 2010

Вам действительно нужно отслеживать значения при разборе, потому что вы также можете получить относительные перемещения (td) и вам нужно учитывать множество других значений, чтобы получить правильный контурный прямоугольник для текста.

Значения также можно вводить и выводить из стека с помощью команд Q q.

...