使用PHP提取PDF元数据字段
我的共享托管Web服务器上有一系列PDF文件,我正在为其编写一个PHP脚本,以便在屏幕上对它们进行分类。我已经在PDF文件中添加了元数据—文档标题、作者和主题。文件名由作者和标题组成,因此我可以从中构造目录文本。但是,我也想显示“Subject”元数据字段的内容 因为我使用的是共享主机,所以无法安装任何额外的PHP扩展。他们有PDFLib的免费版本,但这不包括任何加载PDF文件或提取元数据的功能使用PHP提取PDF元数据字段,php,pdf,metadata,Php,Pdf,Metadata,我的共享托管Web服务器上有一系列PDF文件,我正在为其编写一个PHP脚本,以便在屏幕上对它们进行分类。我已经在PDF文件中添加了元数据—文档标题、作者和主题。文件名由作者和标题组成,因此我可以从中构造目录文本。但是,我也想显示“Subject”元数据字段的内容 因为我使用的是共享主机,所以无法安装任何额外的PHP扩展。他们有PDFLib的免费版本,但这不包括任何加载PDF文件或提取元数据的功能 function catalogue($folder){ $files = preg_grep(
function catalogue($folder){
$files = preg_grep('/^([^.])/', scandir($folder));
foreach($files as $file){
$page = file_get_contents($file);
$metadata = preg_match_all('/\/[^\(]*\(([^\/\)]*)/',$page,$matches);
$author = $matches[1][0];
$subject = $matches[1][4];
$title = $matches[1][5];
echo($title.'/'.$subject.'/'.$author.'<br>');
}
}
/
这是目前为止只显示文件名列表的脚本
function catalogue($folder){
$files = preg_grep('/^([^.])/', scandir($folder));
foreach($files as $file){
echo($file.'<br/>');
}
}
…是
pdf_pcos_get_string(): supplied resource is not a valid pdf object resource
…我在网上找不到关于这个功能的任何帮助。真的没什么
我在共享主机上运行PHP7.4。元数据不像PDF那样加密,所以你可以使用file\u get\u内容,找到主题的模式(元数据不像PDF那样加密,所以你可以使用file\u get\u内容,找到主题的模式(谢谢@drdlp。我使用了
file\u get\u内容()
加载PDF并提取和显示元数据
function catalogue($folder){
$files = preg_grep('/^([^.])/', scandir($folder));
foreach($files as $file){
$page = file_get_contents($file);
$metadata = preg_match_all('/\/[^\(]*\(([^\/\)]*)/',$page,$matches);
$author = $matches[1][0];
$subject = $matches[1][4];
$title = $matches[1][5];
echo($title.'/'.$subject.'/'.$author.'<br>');
}
}
/
行console.log(details);
向控制台输出一个对象。从那里我根本不知道如何提取任何数据。因此document.getElementById(id)。innerHTML=details;
不显示任何内容
这是输出到控制台的对象
谢谢@drdlp。我使用了
文件获取内容()
加载到PDF中,提取并显示元数据
function catalogue($folder){
$files = preg_grep('/^([^.])/', scandir($folder));
foreach($files as $file){
$page = file_get_contents($file);
$metadata = preg_match_all('/\/[^\(]*\(([^\/\)]*)/',$page,$matches);
$author = $matches[1][0];
$subject = $matches[1][4];
$title = $matches[1][5];
echo($title.'/'.$subject.'/'.$author.'<br>');
}
}
/
行console.log(details);
向控制台输出一个对象。从那里我根本不知道如何提取任何数据。因此document.getElementById(id)。innerHTML=details;
不显示任何内容
这是输出到控制台的对象
好的-比我想象的要简单得多!谢谢-这很有效。但是,在一个目录中加载40个pdf文件有点慢。是的。存储结果应该比每次使用gile_get_内容效果更好。这是个好主意-谢谢。我可以做到。你对我在下面评论的pdf.js有经验吗?好的-这比我想象的要简单得多!谢谢你-这很有效。但是,在一个目录中加载40个pdf文件有点慢。是的。存储结果应该比每次使用gile_get_内容效果更好。这是个好主意-谢谢。我可以做到。你对我在下面评论的pdf.js有经验吗?