Класс для конвертации pdf в html
Этот PHP пакет конвертирует pdf файлы в html с помощью poppler-utils.
Исходный код: https://github.com/tonchik-tm/pdf-to-html
Благодарности
Большое спасибо Mochamad Gufron (mgufrone)! Я создавал свой пакет на основе его пакета (https://github.com/mgufrone/pdf-to-html).
Примечания
Инструкцию по использованию смотрите ниже.
Установка
Для добавления пакета в Ваше приложение выполните команду из каталога с файлом composer.json
composer require tonchik-tm/pdf-to-html:~1
Или добавьте вручную в composer.json
{ "tonchik-tm/pdf-to-html":"~1" }
Требования
0. Версия PHP >=5.4.0
1. Установить Poppler-Utils
Debian/Ubuntu
sudo apt-get install poppler-utils
Mac OS X
brew install poppler
Windows
Для тех, кому нужен этот пакет на Windows, сначала скачиваем poppler-utils для windows здесь http://blog.alivate.com.au/poppler-windows/.
После скачивания, распаковываем в удобном месте.
2. Мы должны знать, где находятся утилиты
Debian/Ubuntu
$ whereis pdftohtml pdftohtml: /usr/bin/pdftohtml $ whereis pdfinfo pdfinfo: /usr/bin/pdfinfo
Mac OS X
$ which pdfinfo /usr/local/bin/pdfinfo $ which pdftohtml /usr/local/bin/pdfinfo
Windows
Переходим в распакованную папку. В ней должна быть папка под названием «bin». Нам нужен путь к ней.
3. Конфигурация PHP должна позволять запускать команды из оболочки.
Использование
Пример:
< ?php // если вы используете composer, подключите через include 'vendor/autoload.php'; // инициализация $pdf = new \TonchikTm\PdfToHtml\Pdf('test.pdf', [ 'pdftohtml_path' => '/usr/bin/pdftohtml', 'pdfinfo_path' => '/usr/bin/pdfinfo' ]); // пример для windows // $pdf = new \TonchikTm\PdfToHtml\Pdf('test.pdf', [ // 'pdftohtml_path' => '/path/to/poppler/bin/pdftohtml.exe', // 'pdfinfo_path' => '/path/to/poppler/bin/pdfinfo.exe' // ]); // получаем инфо о pdf файле $pdfInfo = $pdf->getInfo(); // получаем количество страниц $countPages = $pdf->countPages(); // получаем контент одной страницы (1) $contentFirstPage = $pdf->getHtml()->getPage(1); // получаем контент всех страниц и пробегаемся по ним foreach ($pdf->getHtml()->getAllPages() as $page) { echo $page . "\n"; }
Полный список настроек:
< ?php $full_settings = [ 'pdftohtml_path' => '/usr/bin/pdftohtml', // путь к pdftohtml 'pdfinfo_path' => '/usr/bin/pdfinfo', // путь к pdfinfo 'generate' => [ // настройки для генерации html 'singlePage' => false, // мы хотим отдельные страницы 'imageJpeg' => false, // мы хотим картинки png а не jpg 'ignoreImages' => false, // нам нужны картинки 'zoom' => 1.5, // масштаб pdf 'noFrames' => false, // мы хотим отдельные страницы ], 'clearAfter' => true, // автоматическая очистка каталога вывода // (если removeOutputDir==false то каталог вывода не останется) 'removeOutputDir' => true, // удалить каталог вывода 'outputDir' => '/tmp/'.uniqid(), // путь к каталогу вывода 'html' => [ // настройки для обработки html 'inlineCss' => true, // заменить css классы на inline css правила 'inlineImages' => true, // найти картинки в html и заменить атрибут src на base64 hash 'onlyContent' => true, // получить только контент внутри body ] ];
Обратная связь
Напишите мне задачу для улучшения, ошибки или другие мысли.
Антон здравствуйте.
К сожалению не получилось запустить ваш класс.
Не хватает подробной документации (для чайников).
У меня Debian 6
Путь к папке: /var/www/admin/data/www/mysite.ru/pdf2html
Что сделал:
Добавил пользователя в sudoers www-data ALL=(ALL) ALL //для тестов
В php.ini disable_functions =
Проверка '/usr/bin/pdftohtml',
'pdfinfo_path' => '/usr/bin/pdfinfo'
]);
Колдовал, колдовал. Пробовал пути разные. Все равно выдает ошибку:
Parse error: syntax error, unexpected '[' in /var/www/admin/data/www/mysite.ru/pdf2html/index.php on line 8 //(на инициализацию выше)
include '/var/www/admin/data/www/mysite.ru/pdf2html/vendor/autoload.php';
подключается без ошибок
Помогите, пожалуйста. Отблагодарю.
_________________________
С уважением, Артем
Приветствую!
Я так понимаю, что у Вас PHP ниже нужной версии. А именно — ниже 5.4.
Кака ты, Антошка.
Ты почему версию php не указал с которой работает твоя шляпа.
Так нельзя делать.
А за скрипт спасибо!
Да, как-то пропустил этот момент. в composer.json прописал, конечно, а тут не учел. Спасибо за коммент)