问题标签 [pdfrw]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - PDFRW 找不到 pdf 表单域
我正在尝试使用 python 库填充 PDF pdfrw
。在使用 Master PDF 4 或 Adobe Acrobat DC 对 pdf 文件进行初始扫描后,我会突出显示一些字段,而忽略一些字段。所以基本上我会尝试在默认情况下未检测到字段的地方添加 EditText/Textbox。但是这些新添加的字段并没有被pdfrw
程序检测到。
代码 -
python - 关于在可编辑的 PDF 文件中填写表格的问题
正如标题所说,我正在尝试通过 Python 脚本填充一些 PDF 字段,以下是我使用的内容:
[我的工作环境属性]
0 - 操作系统:Windows 7 32 位
1 - Python 版本 3.8.3。
2 - 可编辑的 PDF 文件,您可以在此处获取Editable_PDF.pdf
3 - 使用pdfrw库读取和写入 PDF 文件。
4 - 来自外部配置文件的字段名称和值我在这里命名为Field_Value.ini 它是内容
如您所见, =之前的第一列是该 PDF 文件的一些字段名称,第二列是要填充的值。
我使用此命令行通过pdfforms实用程序获得了它们
pdfforms inspect Editable_PDF.pdf
它将创建一个.json文件(名为fields.json)包含有关该 PDF 文件中找到的每个字段的信息。
5 - 用于读取该.ini文件并填充Editable_PDF.pdf字段的 Python 脚本。
实际上,我在大部分方面都取得了成功,除了一件小事让我对此提出疑问,因为老实说我没有找到解决方案,我仍在寻找。
问题是Field_Value.ini中列出的所有字段都已填写,除了这个Docket #,无论我做什么都不会填写,有趣的是,如果您尝试通过浏览器或 PDF 编辑器手动填写它,它就会被填写。一开始我以为我可能输入了错误的字段名称,但不,我认为这是正确的,因为无论我填写什么值,我都发现它在fields.json中的名称很方便,与Docket #相同。
所以这里的问题是那个Docket #字段到底出了什么问题???,是的,我真的没有得到它,我觉得它在某种程度上很简单。
我不想让你为此编写脚本,我至少已经完成了一个测试。您所需要的只是使用Python安装pdfrw库,这是脚本:
它可能有点难看,但它可以满足我的需要。我以为你们对此有所了解,所以任何帮助表示赞赏,甚至感谢您花时间阅读它。
编辑:
似乎pdfrw没有以某种方式检测到该字段名称。
我要说的是,我试图在pdfrw像这样处理 PDF 文件时打印出检测到的字段,print (key)
或者print (annotation[ANNOT_FIELD_KEY][1:-1])
它列出了几乎所有字段名称,除了我要查找的字段名称Docked #,所以我认为这就是为什么它没有不要填写那张表格。
无论如何,我通过使用另一种方式解决了这个问题,我发现pdftk可以通过简单的命令行使用.fdf文件而不是.ini来做到这一点,所以是的,目前它以这种方式解决了。
如果你认为pdfrw的问题可以解决就好了。任何帮助表示赞赏。
微笑问候。
python - 无法使用 python pdfrw lib 更新/显示 PDF 表单
我有一些关于 pdf 表格填写的问题。首先让我给你一些背景信息:我正在尝试制作一个 100% python pdf 表单填写服务,为此我正在使用 pdfrw 库。
这是我的代码,它以pdf路径和data_dict(json变成dict)作为参数:
但我努力让它发挥作用。这是我的两个问题:
根据 pdf 查看器的不同,文本字段中的数据不会显示,我的复选框也是如此。我没有足够的关于 PDF 的知识来区分每个查看器之间的区别,在任何情况下我应该有什么才能显示它?
我对一个特定字段也有一个大问题=>当我打开“清理过的”pdf时我可以编辑它,但是当我通过我的代码传递它时,什么都没有写,而且文本不可编辑......还有当我打印时相应的注释,对于“窃听者”,这是我得到的(在填充之前):
annotation = {'/AP': {'/N': (216, 0)}, '/DA': '(/Helv 0 Tf 0 g)', '/DR': {'/Encoding': {'/PDFDocEncoding': {'/Differences': ['24', '/breve', '/caron', '/circumflex', '/dotaccent', '/hungarumlaut', '/ogonek', '/ring', '/tilde', '39', '/quotesingle', '96', '/grave', '128', '/bullet', '/dagger', '/daggerdbl', '/ellipsis', '/emdash', '/endash', '/florin', '/fraction', '/guilsinglleft', '/guilsinglright', '/minus', '/perthousand', '/quotedblbase', '/quotedblleft', '/quotedblright', '/quoteleft', '/quoteright', '/quotesinglbase', '/trademark', '/fi', '/fl', '/Lslash', '/OE', '/Scaron', '/Ydieresis', '/Zcaron', '/dotlessi', '/lslash', '/oe', '/scaron', '/zcaron', '160', '/Euro', '164', '/currency', '166', '/brokenbar', '168', '/dieresis', '/copyright', '/ordfeminine', '172', '/logicalnot', '/.notdef', '/registered', '/macron', '/degree', '/plusminus', '/twosuperior', '/threesuperior', '/acute', '/mu', '183', '/periodcentered', '/cedilla', '/onesuperior', '/ordmasculine', '188', '/onequarter', '/onehalf', '/threequarters', '192', '/Agrave', '/Aacute', '/Acircumflex', '/Atilde', '/Adieresis', '/Aring', '/AE', '/Ccedilla', '/Egrave', '/Eacute', '/Ecircumflex', '/Edieresis', '/Igrave', '/Iacute', '/Icircumflex', '/Idieresis', '/Eth', '/Ntilde', '/Ograve', '/Oacute', '/Ocircumflex', '/Otilde', '/Odieresis', '/multiply', '/Oslash', '/Ugrave', '/Uacute', '/Ucircumflex', '/Udieresis', '/Yacute', '/Thorn', '/germandbls', '/agrave', '/aacute', '/acircumflex', '/atilde', '/adieresis', '/aring', '/ae', '/ccedilla', '/egrave', '/eacute', '/ecircumflex', '/edieresis', '/igrave', '/iacute', '/icircumflex', '/idieresis', '/eth', '/ntilde', '/ograve', '/oacute', '/ocircumflex', '/otilde', '/odieresis', '/divide', '/oslash', '/ugrave', '/uacute', '/ucircumflex', '/udieresis', '/yacute', '/thorn', '/ydieresis'], '/Type': '/Encoding'}}, '/Font': {'/Helv': {'/BaseFont': '/Helvetica', '/Name': '/Helv', '/Subtype': '/Type1', '/Type': '/Font'}}}, '/F': '4', '/FT': '/Tx', '/P': (12, 0), '/Rect': ['453.96', '455.04', '749.16', '463.2'], '/Subtype': '/Widget', '/T': '(Nomdusage)', '/TU': '(Nomdusage)', '/Type': '/Annot'}
当所有其他应该以相同的方式使用时,我得到:
annotation = {'/DA': '(/Helv 12 Tf 0 g)', '/F': '4', '/FT': '/Tx', '/MK': {}, '/P': (12, 0), '/Rect': ['129.105', '454.669', '395.032', '463.725'], '/Subtype': '/Widget', '/T': '(Nomdenaissance)', '/TU': '(Nomdenaissance)', '/Type': '/Annot'}
有了这个,我不知道我是否做错了什么......我的观点是“干净”的pdf有一个不好的注释实现,我尝试了很多不同的东西,但事实证明我找不到互联网上的解决方案。
如果需要,我可以提供 pdf 和 data_set。
感谢您的阅读和您的时间!希望你能帮我解决这个问题:)
python-3.x - 使用 pdfrw 库使用 python 从下载目录中读取 pdf 文件
我想使用 PDFRW 库操作 pdf 文件,所以当我尝试获取 pdf 文件的源时,我无法获取文件并阅读它,所以请帮忙。
python - 为什么 Mac 上的 Preview 不尊重 PDF 文件中的“只读”标志?
我正在使用 pdfrw 来填写可填写的 pdf 表单的 django 项目。
我正在设置Ff = 1
标志以使字段只读。
到目前为止,这似乎在我测试的每个查看器中都有效,除了“预览”本机 mac 应用程序以打开和显示 pdf 文件。
这是为什么?我错过了什么吗?还有另一种方法可以实现这一目标吗?
pdf-generation - 使用“pdfrw”和“Reportlab”python 模块时如何保存(保留)PDF 中的现有链接
我有一个使用 fpdf 创建的 pdf 文档。每个 PDF 页面都包含一个文本,该文本是指向同一文档中下一页的链接。当我使用“pdfrw”python 模块(读取为 Xobject)阅读本文档的每一页并使用“Reportlab”画布对象创建新的 pdf 时,创建的最终 pdf 缺少这些链接以跳转到其他页面。任何人都知道如何在使用“pdfrw”和“Reportlab”创建的最终 pdf 中保留这些链接?感谢您提前提供任何帮助。
python-3.x - pdfrw 重复字段标签不显示
所以我有 1 个包含 3 个表单的文件,但其中 2 个使用完全相同的字段并具有相同的标签字段。示例:名称 1 = 表格 1 的名称,名称 1 = 表格 2 的名称。第 3 个名称的名称为 Name3。这是因为前两种形式,一种是供用户保留的,另一种是供供应商使用的。出于某种原因,只有第 3 个会填充标签,前 2 个表单没有显示任何内容。这是我的代码。
这是我的辅助功能。
这是 for 循环之后的打印内容。
这就是返回的标签的打印内容。
我现在发现的问题是提取的字段没有提取重复值。对于注释循环中的注释是我需要弄清楚的。
python - 如何使用 Python 检查 PDF 中的复选框和单选按钮?
我需要使用 Python 来填充完整的 PDF 文件,但我已经搜索了 8 个小时,我只能找到如何仅在 PDF 文件中填充文本字段。我需要填写检查复选框并使用单选按钮,您可以在其中检查一个但不能检查另一个,例如是或否单选按钮或性别单选按钮。
这是我一直在使用pdfrw python 模块的代码...
此代码应该填充文本字段和复选框,但它不适用于复选框,它甚至不检测单选按钮。
如果你有办法用 python 检查单选按钮和复选框,请告诉我。谢谢你。
python - 如何在 python 中为绑定的 PDF 文件创建目录 (TOC)
作为我工作的一部分,我创建了几个 PDF 文件,并将它们合并为一个 PDF,同时将内部参考和可点击链接转换为消失,不再工作
现在我需要在该单个 PDF 文件的开头创建一个 TOC 页面,其中每个 pdf 文件的名称合并到该绑定的 pdf 文件中。
您能否告诉我如何使用合并的单个文件中的信息创建 TOC 并激活链接引用的方法