我想知道如何( perl脚本)提取pdf的内容并将其插入数据库。
示例:我有一个pdf文件(参见下面的示例: MyPdfFile),我希望从这个文件中提取项目代码项目(A和B)、数量(3和2)和价格(10和20),并将它们插入数据库(表:订单)。
提前谢谢你的帮助。
发布于 2019-01-28 14:23:25
简单地说,我发现没有任何现有的Perl模块能够以最小的小题大做来实现您想做的事情。然而,在开源平台上,波普尔带来了实用程序pdftotext。没有什么可以阻止Perl通过以下方式调用pdftotext二进制文件
my $output_of_pdftotext = `pdftotext $pdf_file`;或
my @output_of_pdftotext = `pdftotext $pdf_file`;如果您不打算泛化您的解决方案,而只是需要一些东西来解决您当前的问题(我假设,这是您目前的方向,因为您使用的是Perl,它擅长于这种用法),那么我的实际建议是安装Poppler的pdftotext实用程序,在您的PDF上手动尝试它,并查看它输出了什么。然后,考虑到Perl的一些最小流畅性,您可以使用Perl脚本模式--匹配输出并根据需要重新格式化它。
字符编码
后续行动,执行部分要求:
在标准输出中提取pdf的内容很好,但是我在显示包含重音的单词方面有一个小问题: désignation (in )=D?
utf-8字符用两个字节C3 A9 (十六进制)编码"é“。iso-8859-1编码使用相同的两个字节编码“same”。您的“符号”显然编码为utf-8,这是正常的,所以您的标准输出是正确的。然而,很明显,你的终端想要显示iso-8859-1。如果是这样的话,那么您的终端就误解了标准输出。
您可以告诉pdftotext使用iso-8859-1 (我把它作为阅读手册页的练习,并弄清楚如何做到这一点)。但是,我建议您将终端设置为显示utf-8。
如何将终端设置为显示utf-8?这取决于您使用的终端。我不知道你的终端。在我的终端上,更改编码很容易。也许几分钟的探索和实验你的终端的首选项和设置将告诉你如何更改为utf-8。
https://stackoverflow.com/questions/54403637
复制相似问题