Smalot\Pdf Parser - php библиотека для Joomla

Smalot\Pdf Parser - php библиотека для Joomla

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

Что нового

Smalot / PDF Parser v.2.1.0

Версия от 2 февраля 2022 года

Расширения Joomla WebTolk

78 Всего расширений
11 Категорий
331 Выпущено версий
310014 Всего скачиваний
Корзина
Корзина пуста