Как получить координаты прямоугольника PDF Web Link? - PullRequest
1 голос
/ 15 апреля 2019

При создании PDF-файла в Acrobat пользователь может создать «Веб-ссылки или ссылки на документы», которые вызывают это приглашение

Create Link dialogue

This PDF было создано с 3 такими ссылками.Вам придется скачать, так как программа просмотра Github не отображает прямоугольники.

Существует ли инструмент / библиотека, которая может считывать и извлекать x, y WxH этих прямоугольников и содержащиеся в них ссылки?

Командная строка Linux, python, php?

Я попробовал poppler pdftohtml -xml test3.pdf, однако он получает только 2 из Прямоугольников связи

?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pdf2xml SYSTEM "pdf2xml.dtd">

<pdf2xml producer="poppler" version="0.49.0">
<page number="1" position="absolute" top="0" left="0" height="1294" width="646">
    <fontspec id="0" size="30" family="Times" color="#000000"/>
<image top="0" left="0" width="647" height="1295" src="test3-1_1.jpg"/>
<text top="163" left="89" width="105" height="47" font="0"><a href="http://www.google.com"><b>test 1 </b></a></text>
<text top="425" left="155" width="97" height="46" font="0"><a href="larry@google.com"><b>test 2</b></a></text>
</page>
</pdf2xml>

1 Ответ

0 голосов
/ 17 апреля 2019

Мы предлагаем коммерческий инструмент на PHP, который позволит вам получить доступ к аннотациям ссылок.Это возможно с SetaPDF-Core компонентом:

<?php
// load and register the autoload function
require_once('library/SetaPDF/Autoload.php');

// create a document instance
$document = SetaPDF_Core_Document::loadByFilename('document-with-links.pdf');

// Get the pages helper
$pages = $document->getCatalog()->getPages();

for ($pageNo = 1, $pageCount = $pages->count(); $pageNo <= $pageCount; $pageNo++) {
    $page = $pages->getPage($pageNo);
    $annotationsHelper = $page->getAnnotations();
    $linkAnnotations = $annotationsHelper->getAll(SetaPDF_Core_Document_Page_Annotation::TYPE_LINK);
    foreach ($linkAnnotations AS $linkAnnotation) {
        // $linkAnnotation is an instance of SetaPDF_Core_Document_Page_Annotation_Link
        $rect = $linkAnnotation->getRect();
        $llx = $rect->getLlx();
        $lly = $rect->getLly();
        $width = $rect->getWidht();
        $height = $rect->getHeight();
        // ...
    }
}

См. здесь для API-документа аннотации ссылки.

Это простоДемо-скрипт не заботится о повернутых страницах.Возвращаемые значения - это значения, определенные в самой аннотации.

...