Чтобы получить доступ к слоям документа 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();