Как обнаружить слои в PDF в PHP - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь обнаружить слои и извлечь их из документа PDF.Ну, я не мог найти какие-либо темы об их обнаружении, только о том, как их создать.Это кажется возможным для меня.Пробовал использовать SetaPDF и FPDF, но не может извлечь слои.Есть идеи?

Заранее спасибо.

Томас

1 Ответ

0 голосов
/ 07 июня 2018

Чтобы получить доступ к слоям документа PDF, вы можете использовать компонент SetaPDF-Core (наш продукт, который не является бесплатным!).Простая итерация по всем слоям, которые обычно отображались в графическом интерфейсе, выглядела бы так:

require_once 'SetaPDF/Autoload.php';

$document = SetaPDF_Core_Document::loadByFilename('paht/to/the.pdf');

$oc = $document->getCatalog()->getOptionalContent();
$iterator = $oc->getIterator();

foreach ($iterator AS $entry) {
    echo $iterator->getDepth() . ' ';
    echo str_repeat(' ', $iterator->getDepth() * 4);
    if ($entry instanceof SetaPDF_Core_Document_OptionalContent_Group) {
        echo 'Layer: ' . $entry->getName();
    } elseif ($entry instanceof SetaPDF_Core_Type_StringValue) {
        echo '<i>Label: ' . SetaPDF_Core_Encoding::convertPdfString($entry->getValue()) . '</i>';
    } 
    echo '<br />';
}

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

Доступ к состоянию возможен через метод usage():

$viewsState = $entry->usage()->getViewState();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...