我想知道如何做(perl脚本)来提取pdf的内容并将其插入数据库。
示例:我有一个pdf文件(请参见以下示例:MyPdfFile),我要从该文件中提取商品代码商品(A和B),数量(3和2)和价格(10和20)并将其插入数据库(表:ORDERS)。
在此先感谢您的帮助。
简短地进行扫描,我发现没有现有的Perl模块能够以最小的麻烦完全满足您的要求。但是,在开源平台上,Poppler带来了该实用程序pdftotext
。没有什么可以阻止Perl通过以下方式调用pdftotext
二进制文件的
my $output_of_pdftotext = `pdftotext $pdf_file`;
要么
my @output_of_pdftotext = `pdftotext $pdf_file`;
如果您不是要泛化您的解决方案,而只是需要解决您当前的问题(我认为这是您目前的方向,就您使用的Perl而言,它在这种用法上很出色),那么我的实际建议是您安装Poppler的pdftotext
实用程序,在PDF上手动尝试,然后查看其输出。然后,考虑到Perl的最小流利程度,您可以让Perl脚本模式匹配输出并根据需要重新格式化。
字符编码
跟进,OP询问:
[T] o在stdout poppler上提取pdf的内容效果很好,但是我对显示包含重音符号的某些单词有一个小问题,例如:标准输出中的désignation(pdf)=DÃsignation?
utf-8字符编码使用两个字节C3 A9(十六进制)对“é”进行编码。iso-8859-1编码使用相同的两个字节编码“Ô。您的“désignation”显然编码为utf-8,这是正常现象,因此您的标准输出是正确的。但是,显然,您的终端要显示iso-8859-1。如果是这样,则您的终端会误解标准输出。
您可以告诉pdftotext
使用iso-8859-1(我将其留给您作为练习阅读手册页并弄清楚如何执行此操作)。但是,我的建议是改为将终端设置为显示utf-8。
如何设置终端显示utf-8?这取决于您使用的终端。我不知道你的终端。在我的终端上,更改编码很容易。可能需要几分钟的时间对终端的首选项和设置进行探索和试验,才能向您展示如何更改为utf-8。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句