我正在尝试阅读附加到任意PDF的元数据:标题,作者,主题和关键字。
是否有可以阅读PDF元数据的PHP库,最好是开源的?如果是,或者如果没有,那么如何使用库(或缺少库)来提取元数据?
要清楚,我对创建或修改PDF或其元数据不感兴趣,我不关心PDF主体。我看过很多库,包括FPDF(每个人似乎都推荐),但它似乎只是用于PDF创建,而不是元数据提取。
答案 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);