Существует ли синтаксический анализатор PDF для PHP? [закрытый]

Для межъязыковых проектов я узнал, что представляет в виде строки содержащий , даты RFC 3339 являются лучшим способом пойти. Дата RFC 3339 похожа на это:

  1985-04-12T23:20:50.52Z

я думаю, что большая часть формата очевидна. Единственной несколько необычной вещью может быть "Z" в конце. Это обозначает GMT/UTC. Вы могли также добавить смещение часового пояса как +02:00 для ПОЯСА (Германия летом). Я лично предпочитаю сохранять все в UTC, пока он не отображен.

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

Так генерируют JSON как это:

  json.dump(datetime.now().strftime('%Y-%m-%dT%H:%M:%SZ'))

, К сожалению, Конструктор Date JavaScript не принимает строки RFC 3339, но существуют многие синтаксические анализаторы доступны в Интернете.

huTools.hujson пытается обработать наиболее распространенные проблемы кодирования, с которыми Вы могли бы столкнуться в коде Python включая объекты даты/даты и времени при обработке часовых поясов правильно.

41
задан elviejo79 9 August 2009 в 18:43
поделиться

6 ответов

Вы уже просматривали xPDF ? Там есть программа pdftotext, которая выполняет преобразование. Вы можете вызвать его из PHP, а затем прочитать в текстовой версии PDF. Вам нужно будет иметь возможность запускать exec () или system () из php, поэтому это может не работать для всех размещенных решений.

Кроме того, на сайте PHP есть несколько примеров, которые преобразуют PDF в текст, хотя это довольно грубо. Вы также можете попробовать некоторые из этих примеров. На этой странице PHP найдите luc в phpt dot org.

3
ответ дан 27 November 2019 в 00:51
поделиться

Посмотрите на GhostScript или ITextSharp, существуют различные кроссплатформенные версии обоих.

1
ответ дан 27 November 2019 в 00:51
поделиться

Zend_Pdf является частью Zend Framework . В их руководстве говорится:

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

1
ответ дан 27 November 2019 в 00:51
поделиться

На самом деле это может быть не таблица внутри PDF, так как PDF теряет такую ​​информацию ...

0
ответ дан 27 November 2019 в 00:51
поделиться

Это PHP-синтаксический анализатор PDF, который существует в двух вариантах:

  1. Бесплатная версия может анализировать PDF-файлы до формата PDF 1.5
  2. Коммерческое дополнение может анализировать любой формат PDF (до текущей версии 1.9)
0
ответ дан 27 November 2019 в 00:51
поделиться

Я уже писал его раньше (для аналогичных нужд), и могу сказать следующее: получайте удовольствие. Это довольно сложная задача. Спецификация PDF большая и громоздкая. Существует несколько методов хранения текста внутри него. И самое интересное, что каждый генератор PDF работает по-своему. Таким образом, в то время как что-то вроде TFPDF или DOMPDF создает ДЕЙСТВИТЕЛЬНО легко читаемые PDF-файлы (с точки зрения машины), Acrobat делает некоторые действительно адские документы.

Причина в том, как он пишет текст. Большинство рендереров на основе DOM, которые я использовал, записывают всю строку как одну строку и позиционируют ее один раз (что действительно легко читать). Acrobat пытается быть более эффективным (и это так), записывая только один или несколько символов за раз и размещая их независимо друг от друга. Хотя это ДЕЙСТВИТЕЛЬНО упрощает визуализацию, это НАМНОГО усложняет чтение.

Преимущество здесь в том, что формат PDF сам по себе очень прост. У вас есть «объекты», которые следуют обычному синтаксису. Затем вы можете связать их вместе для создания контента. Спецификация хорошо описывает формат файла. Но для чтения в реальном мире потребуется немного умственных способностей...

Несколько полезных советов, которые мне пришлось выучить на собственном горьком опыте, если вы собираетесь писать сами:

  1. Adobe любит повторять шрифты карт. Таким образом, символ 65, скорее всего, не будет A... Вам нужно найти объект карты и определить, что он делает, основываясь на том, какие символы там находятся.И это эффективно, поскольку, если символ не появляется в документе для этого шрифта, он не включает его (что усложняет жизнь, если вы пытаетесь программно отредактировать PDF)...
  2. Пишите как абстрактно, как возможный. Напишите классы для каждого типа объекта и каждого собственного типа (строки, числа и т. д.). Пусть эти классы проанализируют для вас. Там будет изрядное количество повторений, но вы спасете себя в конце, когда поймете, что вам нужно что-то настроить только для одного определенного типа)...
  3. Пишите для конкретной версии или двух из Спецификация PDF и обеспечить ее соблюдение. Проверьте номер версии, и если он выше, чем вы ожидаете, сделайте залог... И не пытайтесь «заставить его работать». Если вы хотите поддерживать более новые версии, выделите спецификацию и обновите синтаксический анализатор оттуда. Не пытайтесь пробовать и ошибаться (это не весело)...
  4. Удачи со сжатыми потоками. Я обнаружил, что обычно вы не можете доверять аргументам длины для проверки того, что вы распаковываете. Иногда (для некоторых генераторов) это работает хорошо... Другие это на один или несколько байтов. Я просто пытаюсь выкачать его, если фильтр совпадает, а затем задаю длину...
  5. При тестировании длин не используйте strlen. Используйте mb_strlen($string, '8bit'), так как это компенсирует различные наборы символов (и позволит использовать потенциально недопустимые символы в других наборах символов).

В остальном удачи...

29
ответ дан 27 November 2019 в 00:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: