Smalot\Pdf Parser - php библиотека для Joomla
- Категории: Библиотеки, Расширения для Joomla 4 и Joomla 5
- Версия: 2.1.0
- Дата:
Smalot / PDF Parser - это PHP-библиотека, которая предоставляет различные инструменты для чтения данных из PDF-файлов. На данном сайте она упакована для работы с Joomla 3 и Joomla 4.
Описание
Использование чтения PDF-файлов в Joomla
Пример кода для Joomla 3 и Joomla 4.
<?php
defined('_JEXEC') or die('Restricted access');
use \Smalot\PdfParser\Parser;
// Для Joomla 3
JLoader::registerNamespace('Smalot', JPATH_LIBRARIES);
// ИЛИ
// для Joomla 4
JLoader::registerNamespace('Smalot', JPATH_LIBRARIES. '/Smalot');
$file_name = 'images/path_to_file.pdf';
$parser = new Parser();
$pdf = $parser->parseFile(JPATH_SITE . '/' . $file_name);
$pdf_meta_data = $pdf->getDetails();
Различия в указании namespaces в Joomla 3 и Joomla 4
В Joomla 3 следует указывать путь, после которого начинается namespace.
В Joomla 4 следует указывать путь вплоть до каталога, где начинается namespace.
Особенности PDF парсера
- Загрузка и парсинг объектов и заголовков
- Извлечение мета-данных из pdf (автор, описание и т.д.)
- Извлечение текста из указанных страниц
- Поддержка сжатых PDF
- Поддержка кодировки Roman на MAC OS
- Обработка шестнадцатеричной и восьмеричной кодировки в текстовых разделах
- Создание пользовательских (своих) конфигураций (см. CustomConfig.md).
В настоящее время защищенные документы и извлечение данных формы не поддерживаются.
Пример кода
<?php
// Parse PDF file and build necessary objects.
$parser = new \Smalot\PdfParser\Parser();
$pdf = $parser->parseFile('/path/to/document.pdf');
$text = $pdf->getText();
echo $text;
Более подробную информацию можно получить здесь.
Использование
Для начала создадим объект парсера pdf и укажем ему файл.
$parser = new \Smalot\PdfParser\Parser();
$pdf = $parser->parseFile('document.pdf');
// .. или ...
$pdf = $parser->parseContent(file_get_contents('document.pdf'))
Извлечение текста из PDF на PHP
Получить текстовое содержимое из pdf-файла с помощью PHP можно следующим образом.
$text = $pdf->getText();
// or extract the text of a specific page (in this case the first page)
$text = $pdf->getPages()[0]->getText();
Извлечение позиций текста из PDF
Вы можете извлечь матрицу преобразования (индексы 0-3) и положение текстовых объектов по x,y (индексы 4,5).
$data = $pdf->getPages()[0]->getDataTm();
Array
(
[0] => Array
(
[0] => Array
(
[0] => 0.999429
[1] => 0
[2] => 0
[3] => 1
[4] => 201.96
[5] => 720.68
)
[1] => Document title
)
[1] => Array
(
[0] => Array
(
[0] => 0.999402
[1] => 0
[2] => 0
[3] => 1
[4] => 70.8
[5] => 673.64
)
[1] => Calibri : Lorem ipsum dolor sit amet, consectetur a
)
)
Если включено в конфигурации (`Config::setDataTmFontInfoHasToBeIncluded(true)`) идентификатор шрифта (index 2) и размер шрифта (index 3) будут добавлены в dataTm.
// create config
$config = new Smalot\PdfParser\Config();
$config->setDataTmFontInfoHasToBeIncluded(true);
// use config and parse file
$parser = new Smalot\PdfParser\Parser([], $config);
$pdf = $parser->parseFile('document.pdf');
$data = $pdf->getPages()[0]->getDataTm();
Array
(
[0] => Array
(
[0] => Array
(
[0] => 0.999429
[1] => 0
[2] => 0
[3] => 1
[4] => 201.96
[5] => 720.68
)
[1] => Document title
[2] => R7
[3] => 27.96
)
[1] => Array
(
[0] => Array
(
[0] => 0.999402
[1] => 0
[2] => 0
[3] => 1
[4] => 70.8
[5] => 673.64
)
[1] => Calibri : Lorem ipsum dolor sit amet, consectetur a
[2] => R9
[3] => 11.04
)
)
Ширина текста должна быть рассчитана для текста из dataTm, чтобы убедиться, что доступны все значения ширины символов. В следующем примере мы используем данные, приведенные выше.
$fonts = $pdf->getFonts();
$font_id = $data[0][2]; //R7
$font = $fonts[$font_id];
$text = $data[0][1];
$width = $font->calculateTextWidth($text, $missing);
Извлечение мета-данных из PDF файла на PHP
С помощью PHP парсера вы можете извлекать мета-данные из PDF-файла. Доступны различные данные, которые могут меняться от файла к файлу.
$metaData = $pdf->getDetails();
Array
(
[Producer] => Adobe Acrobat
[CreatedOn] => 2022-01-28T16:36:11+00:00
[Pages] => 35
)
Чтение PDF-файлов в кодировке Base64
Если Вы работаете с PDF файлом, закодированным в Base64, Вы можете распарсить файл без сохранения его на диск.
Данный пример распарсит PDF файл в кодировке Base64 и получит текстовое содержимое всего файла.
<?php
// Parse Base64 encoded PDF string and build necessary objects.
$parser = new \Smalot\PdfParser\Parser();
$pdf = $parser->parseContent(base64_decode($base64PDF));
$text = $pdf->getText();
echo $text;
Joomla
- Тип расширения:
- Библиотека
- Версия Joomla:
- 4.0