0

如何将带有 pdf 扩展名的 url 的内容转换为文本以便在 PHP 中解析而无需下载?

我看到如何做到这一点(没有垃圾字符)的唯一方法是将文件下载到服务器文件夹并壳一个可执行文件,将二进制文件转换为文本。

以下是我找到的一些可执行库:TET,文本提取工具包 xpdf

我宁愿在不先下载 pdf 的情况下转换 URL pdf(例如打开二进制文件然后转换)。

有没有办法在不下载 PHP 中的 pdf 的情况下做到这一点?

推荐什么方法以最快的执行时间?

作为一个简短的说明,我将做大约 64 个带有 pdf 扩展名的 URL,并不是所有这些 url 实际上都指向 pdf。实际上,其中一些 url 可能指向别名 html 页面,不一定是 pdf 文件,因此在使用转换工具之前需要辨别差异。

4

2 回答 2

0

直接从 a 转换URL是不切实际的,而且会是very slow.. 大多数转换是通过command line而不是直接使用来完成的,以PHP获得快速和更好的结果

样本转换使用xpdf pdftotext

安装 (Linux)apt-get install xpdf

示例代码

$file = $directory . '/' . $filename;
$fileinfo = pathinfo ( $filename );
$content = "";

// pdt to text
if ($fileinfo ['extension'] == 'pdf') {
    $outpath = preg_replace ( "/\.pdf$/", "", $file ) . ".txt";
    system ( "pdftotext -enc UTF-8 " . escapeshellcmd ( $file ), $ret );
    if ($ret == 0) {
        $content = file_get_contents ( $outpath );
        unlink ( $outpath );
    }
}
于 2012-04-14T08:02:27.407 回答
0

我找到了一些获取 file_get_contents('url.pdf') 内容的源代码并进行了粗略的转换(我的意思是非常粗略)。

由于这似乎是在内存中进行这种转换的最佳方法,我想我别无选择,只能先下载“url.pdf”。

此代码可以下载文件吗?

//set to the URL of the file you want to download:
$inPath = "http://somepage.com/hello.jpg";
//set to the local path where the file should be saved:
$outPath = "/usr/local/htdocs/hello.jpg";

$in = fopen($inPath, "rb");
$out = fopen($outPath, "wb");

while ($chunk = fread($in,8192) ) {
fwrite($out, $chunk, 8192);
}

fclose($in);
fclose($out);
于 2012-04-14T17:48:42.513 回答