2010-09-01 38 views
0

情况如下:我有一系列大的胖PDF文件,充满了图像和随机分布的文本 - 这些是一个巨大的促销大量产品的价格表。我需要的是在每个PDF文件的文本中对所有目录代码进行模式匹配,并使用指向网上商店中相应页面的超链接来包装它。模式匹配PDF正文中的文本并使用PHP添加超链接

所以这个任务很简单 - 扫描所有纯文本10数字序列的PDF文件,并将其转换为href为http://something?code=[match]的链接。

如果可能的话,我也希望把它放在一个PHP脚本中,但任何语言都可以。我有一种直觉,即使闪光灯可能是一种选择。

任何想法?提前致谢。

编辑:

一些答案是教我pcre语法。这里的问题是我需要在PDF文件中进行搜索和替换。所以问题是双重的。假设我们将在PHP中执行此操作:

  • 如何读取/写入PHP中的PDF?
  • 由于PDF不是纯文本文件,所以我不能仅仅对它们进行regex,我也相信PDF链接不与文本捆绑在一起,而是作为区域分开。这也意味着如果我只知道匹配的代码在页面上的位置,我可能会覆盖活动矩形覆盖目录代码字符的坐标。

您怎么看?其他语言也是一种选择。

谢谢。

回答

1

替换文本的PDF是困难的,没有开源PDF解决方案的支持此功能。

Apago(www.apago.com)开发了一个商业解决方案,用于替换PDF文件中的文本。它被贺卡制造商用来修改定价,“MADE IN”文本,产品编号等。

+0

好的 - 但是如何找到文本并获得边界框,以便在其正上方绘制一个活动的透明矩形? – Hristo 2010-09-14 14:26:21

+0

Xpdf可以用来计算文本的bbox。请参阅示例TextOutput输出设备类。如果您需要准备好的东西,请联系[email protected]以获取有关我上面提到的工具的更多信息。 – 2010-10-18 13:40:33

0
<? 
$s=" 
http://something.com?code=3000 asdf text 
http://something.com?code=5000 asdf 
"; 
echo preg_replace('/(http:\/\/something\.com\?code=(\d+))/s', '<a href="$1">$2</a>',$s); 
?> 

输出 3000 ASDF文本

5000 ASDF

+0

这是一个真正无关紧要的答案。 – Hristo 2010-09-05 13:44:18

+0

对不起,但正则表达式不适用于PDF内容流。 – 2010-10-18 13:41:37

相关问题