如何使用Smalot / PDFParser从PHP中的PDF文件中提取书签?

时间:2017-08-04 10:30:39

标签: php laravel parsing pdf pdf-parsing

现在我正在使用PHP和Laravel。我的目标是从上传的PDF文件(使用Form和POST方法)中提取尽可能多的信息,例如元数据(作者,标题等),首页(封面),每页的内容和可用的章节(来自书签)。

我目前正在使用smalot的PDF Parser here,但文档仅涵盖了我从PDF文件中获得的一些基本示例。

问题:我当前的问题是提取这些书签以满足本章的要求。有谁知道如何使用这个特定的解析器提取这种类型的内容?

我的代码目前看起来像这样:

<table>
    <?php
        $details  = $PDFfile->getDetails();
        // Loop over each property to extract values (string or array).
        foreach ($details as $property => $value) {
            if (is_array($value)) {
                $value = implode(', ', $value);
            }
            echo '<tr>';
            echo '<td><b>'.$property . '</b></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td>' . $value . "</td>";
            echo '</tr>';
        }
    ?>
</table>

请注意,这只会产生一个如下所示的输出:

[Producer] => dvips + GNU Ghostscript 7.05
[Creator] => LaTeX with hyperref package
[Title] => 
[Subject] => 
[Author] => 
[Keywords] => 
[Pages] => 11

1 个答案:

答案 0 :(得分:0)

我没有Smalot的经验,但我确实有一些从PDF书签中提取信息的经验。因此,查看PDF reference的第12.3.3节和smalot文档,我将从Document getDictionary()开始,并获得&#39; Outlines&#39;从该字典中输入,然后遍历树,查看First,Next,Title,Last和Count条目。