【问题标题】:How can the contents of a url with a pdf extension be converted to text for parsing in PHP without downloading?如何将带有 pdf 扩展名的 url 的内容转换为文本以便在 PHP 中解析而无需下载?
【发布时间】:2012-04-14 07:18:00
【问题描述】:

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

我见过的唯一方法(不包含垃圾字符)是将文件下载到服务器文件夹并壳一个可执行文件,将二进制文件转换为文本。

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

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

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

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

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

【问题讨论】:

  • 你为什么不想下载它们?这似乎是一个相当随意的限制,知道为什么可以帮助别人给你建议。
  • 主要是为了阻止硬盘访问,因为我要翻几千个pdf。根据 pdf 的大小,它还会导致下载时的执行时间成为瓶颈。我相信 file_get_contents 使用内存并且不访问硬盘。我需要一些可以获取 pdf 内容并将其转换为文本的东西。
  • 你可以控制服务器设置的超时时间吗?如果您计划一次通过数千次,则很可能需要比默认超时时间更长的时间。
  • 是的。我已将 ini 时间重置为大约几个小时,所以我不必担心太多。

标签: php pdf text


【解决方案1】:

直接从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 );
    }
}

【讨论】:

【解决方案2】:

我找到了一些源代码,它获取了 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);

【讨论】:

  • 我还建议您在完成转换后添加unlink($outPath);,以释放空间。或者,如果您要批量处理文件,请创建一个包含所有文件的数组,然后在最后批量取消链接。
  • 是的,基本上步骤是: 1. 下载文件。 2. 将文件转换为文本。 3. 解析文本并希望转换成功。 4. 删除文件。
猜你喜欢
  • 2011-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
相关资源
最近更新 更多