2015-07-20 90 views
7

我有一堆使用刮板下载的PDF。这个刮板并没有检查文件是JPG还是PDF,因此默认情况下,所有这些文件都下载并以'.pdf'扩展名保存。所以,只是澄清批处理中的所有文件都是.pdf。但是,如果我尝试通过服务器或本地打开它们(不是PDF而是JPG)的文件,我会遇到错误。检查PDF是否实际上是一个带有PHP的PDF

我的问题。有没有办法用PHP来检查并看看这个文件是否是一个有效的PDF?我想通过一个循环来运行所有的URL来检查这些文件。其中有数百个,它需要几个小时的时间来检查。

感谢

+3

PDF与' “%PDF” 开始' –

+0

这个问题上的信息有点短。你可以分享你的尝试,以及你遇到了什么问题? –

+0

我还没有尝试过任何东西,因为所有的Google搜索都将我引导到类似的东西,但不是我所需要的东西。我觉得我的问题总结了我需要完美的东西。我有一堆是PDF文件。但是,其中一些PDF是被偶然保存为PDF的JPG文件。我需要弄清楚哪些是哪些。 –

回答

0

使用函数获取MIME类型的文件:finfo_file()

if (function_exists('finfo_open')) { 
    $finfo = finfo_open(FILEINFO_MIME); 
    $mimetype = finfo_file($finfo, "PATH-TO-YOUR-FILE"); 
    finfo_close($finfo); 
    echo $mimetype; 
} 

echo "<pre>"; 
print_r($mimetype); 
echo "</pre>"; 
+0

这给我没有输出 –

+0

你有没有改变文件路径? – Pupil

+0

是的,我会说文件所在的服务器与脚本不同。不知道这是否有所作为。 –

2

对于本地文件(PHP 5.3+):

$finfo = finfo_open(FILEINFO_MIME_TYPE); 
foreach (glob("path/to/files") as $filename) { 
    if(finfo_file($finfo, $filename) === 'application/pdf') { 
     echo "'{$filename}' is a PDF" . PHP_EOL; 
    } else { 
     echo "'{$filename}' is not a PDF" . PHP_EOL; 
    } 
} 
finfo_close($finfo); 

对于远程文件:

$ch = curl_init(); 
$url = 'http://path.to/your.pdf'; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_NOBODY, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$results = split("\n", trim(curl_exec($ch))); 
foreach($results as $line) { 
    if (strtok($line, ':') == 'Content-Type') { 
      $parts = explode(":", $line); 
      echo trim($parts[1]); // output: application/pdf 
    } 
} 
+0

此脚本没有输出,我正在运行兼容的PHP版本。 –

+0

如果PDF是在本地下载的(正如您所提到的),路径是正确的并且存在'finfo'函数,这应该起作用。 – vonUbisch

+0

@ smack-a-bro:你没有在任何人的脚本上得到任何输出,所以你做错了什么。打开错误报告并查看问题所在。 –

0

使用finfo_file()功能

<?php 
if (function_exists('finfo_open')) { 
    $mime = finfo_open(FILEINFO_MIME_TYPE); 
    $mime_type = finfo_file($mime, "FILE-PATH"); 
    if($mime_type == "application/pdf") 
    echo "file is pdf"; 
    else 
    echo "file is not pdf"; 
    finfo_close($mime); 
} 
+0

此脚本没有输出 –

+0

尝试编辑代码 –

相关问题