2011-02-02 6 views
2

Мне нужно пройти через источник файла pdf (желательно с помощью php), чтобы проверить, есть ли у него определенные поля, столбцы, текст разделен на два столбца с одинаковой шириной и другими правилами проверки стиля. Файл будет загружен на веб-сайт и при загрузке пользователю должно быть сообщено подтверждение, указав, действительно ли файл действителен или нет.PHP - проверка подлинности стилей PDF-файлов

В ссылке ниже приведены некоторые из правил, к которым файл должен придерживаться: http://ifac.papercept.net/conferences/support/page.php

Не могли бы вы посоветовать, как это можно сделать? Можно ли сделать такое заявление? У меня уже есть веб-сайт, мне нужно только реализовать валидатор PDF.

ответ

0

У меня возникает соблазн просто посмеяться над вашим бедным несчастным существованием при выполнении такой задачи, но вместо этого позвольте мне объяснить, почему то, что вы хотите, почти невозможно.

В PDF не указаны поля и столбцы и абзацы. Это больше похоже на «рисование этих символов в этих координатах». Transformation matrices, and color spaces and clipping regions, oh my!

Есть несколько библиотек PDF, которые позволят вам определить местоположение (ограничивающие поля) всех команд рисования текста на определенной странице. Из этой информации вам нужно будет определить, соблюдают ли они все ваши требования к макету.

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

(some text from column one   some text from column two) Tj 

Столкнувшись с чем-то в этом роде (совершенно законным, но ни один к дружественным к анализу BBox), вы должны дальнейшее разбиение текстовых полей на основе пробелов, которые они содержат.

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

Нет.
Fun.

Библиотеки, которые предоставляют вам такой уровень текстовой информации, как правило, также расскажут вам, какой шрифт, размер и цвет используется для данного фрагмента текста.

Существует ли такая библиотека для PHP? Я не знаю. iText (Java или C#, AGPL или $) может определять границы текста, а также библиотеки Adobe ($$). Я уверен, что есть и другие.

я настоятельно рекомендую вам искать другой способ исполнения этого основного положения (как «люди, глядя на PDF-файлы» или «каждый должен представить как [другой формат]».

+0

Heck, даже текст Безразлично» t должен быть текстом. Это может быть .jpg, который был забит в контейнер PDF. В лучшем случае преобразование PDF в изображение и выполнение некоторых базовых ocr-ish вещей на нем может сработать. «Существует ли достаточное количество белого поля, там белая линия по середине »и т. д. –

+0

И это может быть линейное искусство. Да, какой-то безумный урод мог даже нарисовать кучу цветных прямоугольников вместо растрового изображения. будь то текст. И я даже не попал в кодировки. –

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