Чтение pdf-файлов с помощью php
У меня есть большой PDF-файл, который является картой этажа для здания. Оно имеет слои для всей офисной мебели включая текстовые коробки положения места.
моя цель-прочитать этот файл с помощью PHP, найти в документе текстовые слои, получить их содержимое и координаты в файле. Таким образом, я могу отобразить местоположения сидений -> координаты x/y.
есть ли способ сделать это через PHP? (Или даже Ruby или Python, если это необходимо)
5 ответов
Проверьте FPDF (с FPDI):
http://www.setasign.de/products/pdf-php-solutions/fpdi/
Они позволят вам открыть pdf-файл и добавить в него контент на PHP. Я предполагаю, что вы также можете использовать их функциональность для поиска по существующему контенту необходимых вам значений.
другой возможной библиотекой является TCPDF: http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf
обновление для добавления более современной библиотеки:PDF Parser
существует библиотека php (pdfparser), которая делает именно то, что вы хотите.
сайт проекта
github
https://github.com/smalot/pdfparser
демо-страница / api
после включения pdfparser в ваш проект вы можете получить весь текст из mypdf.pdf
вот так:
<?php
$parser = new \installpath\PdfParser\Parser();
$pdf = $parser->parseFile('mypdf.pdf');
$text = $pdf->getText();
echo $text;//all text from mypdf.pdf
?>
Simular вы можете получить метаданные из pdf как wel, как получение объектов pdf (например, изображений).
Мда ... не совсем php, но вы можете вызвать программу из php, чтобы преобразовать pdf во временный html-файл, а затем проанализировать полученный файл с помощью php. Я сделал что-то подобное для своего проекта, и это программа, которую я использовал:
что круто в программе, так это то, что она будет выплевывать текстовые элементы в тегах с абсолютными координатами положения. Похоже, это именно то, что вы пытаетесь сделать.
вы можете также попробовать это приложение http://pdfbox.apache.org/. Рабочий пример можно найти вhttps://www.jinises.com
ваш первоначальный запрос: "у меня есть большой PDF-файл, который является картой этажа для здания. "
Я боюсь сказать вам, что это может быть сложнее, чем вы думаете.
причина последнее известное использование lib everyones для разбора pdf-это smalot, и этот, как известно, сталкивается с проблемой большого файла.
здесь тоже ищите реальный PHP lib для разбора pdf, без какого-либо пика памяти, который нуждается в конфигурации php, чтобы отключить ограничение памяти как много "разработчики" (что, я думаю, действительно не рекомендуется).
см. этот пост для получения более подробной информации о производительности smalot:https://github.com/smalot/pdfparser/issues/163