在PHP中阅读PDF元数据

时间:2010-12-20 19:37:51

标签: php pdf metadata

我正在尝试阅读附加到任意PDF的元数据:标题,作者,主题和关键字。

是否有可以阅读PDF元数据的PHP库,最好是开源的?如果是,或者如果没有,那么如何使用库(或缺少库)来提取元数据?

要清楚,我对创建或修改PDF或其元数据不感兴趣,我不关心PDF主体。我看过很多库,包括FPDF(每个人似乎都推荐),但它似乎只是用于PDF创建,而不是元数据提取。

6 个答案:

答案 0 :(得分:8)

Zend框架包含Zend_Pdf,这使得这很容易:

$pdf = Zend_Pdf::load($pdfPath);

echo $pdf->properties['Title'] . "\n";
echo $pdf->properties['Author'] . "\n";

限制:仅适用于没有加密小于16MB的文件。

答案 1 :(得分:6)

不了解库,但实现相同结果的简单方法可能是打开文件并解析最后一个“endstream”之后的所有内容。

尝试在文本编辑器上打开pdf,解析器不应超过五行。

答案 2 :(得分:5)

PDF Parser完全符合您的要求,使用非常简单:

$parser = new \Smalot\PdfParser\Parser();
$pdf    = $parser->parseFile('document.pdf');
$text   = $pdf->getDetails();

您可以在demo page中尝试一下。

答案 3 :(得分:3)

我今天也在寻找同样的事情。我在 http://de77.com/ 上遇到了一个小型PHP课程,它提供了一个快速而肮脏的解决方案。您可以直接 download the class 。输出为UTF-8编码。

创作者说:

  

这是我写的一个PHP类,可以用来获取标题&作者和   任何PDF文件的页面数。它不使用任何外部   应用程序 - 只是纯PHP。

// basic example
include 'PDFInfo.php';
$p = new PDFInfo;
$p->load('file.pdf');
echo $p->author;
echo $p->title;
echo $p->pages;

对我来说,它有效!所有感谢都归功于班级的创造者......好吧,也许只是感谢我找到班级;)

答案 4 :(得分:2)

<?php 

    $sourcefile = "file path";
    $stringedPDF = file_get_contents($sourcefile, true);

    preg_match('/(?<=Title )\S(?:(?<=\().+?(?=\))|(?<=\[).+?(?=\]))./', $stringedPDF, $title);
    echo $all = $title[0];

答案 5 :(得分:1)

您可以使用 PDFtk 来提取网页计数:

// Windows
$bin = realpath('C:\\pdftk\\bin\\pdftk.exe');
$cmd = "cmd /c {$bin} {$path} dump_data | grep NumberOfPages | sed 's/[^0-9]*//'";

// Unix
$cmd = "pdftk {$path} dump_data | grep NumberOfPages | sed 's/[^0-9]*

如果 ImageMagick 可用,您也可以使用:

$cmd = "identify -format %n {$path}";

通过shell_exec()在PHP中执行:

$res = shell_exec($cmd);