我在用PyPDF2阅读标准PDF文件时遇到了麻烦。PdfReader类将读取文档并为我的文档提供正确的元数据属性,但检查任何其他内容将为我提供一个填充文本,如果我没有安装adobe扩展,浏览器就会这样做:
要加载的文档
需要Adobe 8或更高版本。您可能没有安装Adobe,或者您的查看环境可能没有正确配置为使用Adobe。有关如何安装Adobe和配置查看环境的信息,请参阅http://www.adobe.com/go/pdf_forms_configure。
我能够成功地读取此特定pdf的元数据,以及由同一实体和工具发布的其他元数据。
一些示例代码显示了这个问题:
from PyPDF2 import PdfReader
from pathlib import Path, WindowsPath
award_test = PdfReader(WindowsPath("DA Form 638.pdf"))
print(award_test.metadata)
print(award_test.get_form_text_fields())
print(award_test.pages[0].extract_text())
产量:
{'/CreationDate': "D:20210517070206-04'00'", '/Creator': 'Designer 6.3', '/Distrubution': 'Unrestricted', '/Doc_Num': '638', '/Form_Month': '04', '/Form_Version': '1.03', '/Form_Year': '2021', '/ModDate': "D:20210517070206-04'00'", '/OMB_Expire': '', '/OMB_Number': '', '/PA_Code': 'No', '/PIN': '083079', '/Pre_Dir': 'AR 600-8-22', '/Prefix': 'DA', '/Producer': 'Designer 6.3', '/Product_Type': 'Form', '/Proponent': 'DCS, G-1', '/Pub_Day': '05', '/Pub_ID': '8-22', '/Pub_Month': '03', '/Pub_Series': '600', '/Pub_Type': 'AR', '/Pub_Year': '2019', '/Scope': 'Army', '/Security_Class': 'UC', '/Signature': 'Yes', '/Subject': 'DA FORM 638, APR 2021', '/Suffix': '', '/Title': 'RECOMMENDATION FOR AWARD', '/Unicode': 'EMO'}
{}
The document you are trying to load requires Adobe Reader 8 or higher. You may not have the Adobe Reader installed or your viewing environment may not be properly configured to use Adobe Reader. For information on how to install Adobe Reader and configure your viewing environment please see http://www.adobe.com/go/pdf_forms_configure.
我的问题是:根据元数据,我能够阅读由同一个实体和同一个工具发布的其他表单,有什么方法可以从中提取信息吗?链接到PDF:https://armypubs.army.mil/pub/eforms/DR_a/ARN32485-DA_FORM_638-003-EFILE-4.pdf (这是一个不受限制的、非机密的文档-我只是想节省大量阅读/编写这些文件的时间)
我确实在这里回顾过类似的问题:PDFMiner can't read pdf forms that require Adobe Acrobat,但是它似乎是一个错误的引导,因为我使用的是PyPDF,而且我可以使用这个工具打开其他可填充的pdfs。
发布于 2022-11-29 14:59:59
您的文档是一个动态XFA表单。这些动态表单完全用XML定义,PDF文件充当容器。PDF文件只有一个页面,其中包含您提取的消息,这是针对不支持动态XFA表单的PDF处理器。
使用打开该文件,您将看到一个包含3页的完整PDF文件。使用SumatraPDF打开该文件,您将看到一个空的PDF文件,并带有您收到的警告。
也许PyPDF2可以使用XFA表单。否则,您将需要一个低级别的PDF工具来提取XML流。
https://stackoverflow.com/questions/74613023
复制相似问题