我需要以编程方式填写PDF表单的单选按钮,我可以在JS,go或python中完成吗?

k0pti3hp  于 2023-06-19  发布在  Go
关注(0)|答案(2)|浏览(144)

我找到了用于node.js的pdf-fill-form,并使用它来填写客户端需要匹配用户在线应用程序的PDF应用程序。唯一的问题是,pdf有几个单选按钮,像性别,我没有得到回应,当我尝试和设置字段“性别”值为“男性”或“女性”,即使这些是值。

var vals = {"Sex": "Male"}

  pdfFillForm.write(sourcePDF, vals, { "save": "pdf" } )
    .then(function(result) {
      fs.writeFile(destinationPDF, result, function(err){
        if (err) {
          return console.log(err);
        }
        console.log("Success Saving");
      });
    }, function(err) {
      console.log(err);
  });

它在pdf-fill-form文档中明确表示它只支持文本和复选框,所以我明白了,但我找不到Java或C#/C++之外的任何东西可以做到这一点,我真的不想添加另一种技术来解决这个似乎相当常见的问题。有人知道什么吗?或者有工作吗?谢谢

gzszwxb4

gzszwxb41#

我自己做的,其实还不错。我刚刚更新了pdf-fill-form代码,正在等待关于我的pull request的回复,但是如果在此期间有人需要它,https://github.com/mttchrry/pdf-fill-form

s2j5cfk0

s2j5cfk02#

python使用pypdftk的解决方案
输入PDF文件

使用File/Export As/Export as PDF在LibreOffice Draw中创建pdf文件。
组的单选按钮都具有相同的名称,并且没有组名称。(如果设置不同的名称和相同的组名,似乎会得到相同的结果)
在安装了pdftk的计算机上,对一组中至少包含两个单选按钮的输入pdf文件运行以下命令:

pdftk in.pdf dump_data_fields > fields.list

File fields.list应该有一个像这样的部分:
字段类型:按钮字段名称:radio_button_cooking字段标志:49152字段值:1字段值默认值:场外理由:左字段状态选项:1 FieldStateOption:2 FieldStateOption:3 FieldStateOption:关闭
这意味着组中有两个按钮,具有相同的名称radio_button_cooking。如果组中有更多按钮,则值继续为4,..

使用pypdftk填充PDF

此处按钮的可能值为1、3或3。或者没有选择。

import pypdftk

val_rare = 1 #guesswork to link values to options
val_medium = 2
val_welldone = 3
fields = {
    'my_radio_button': val_medium,
}
pypdftk.fill_form("in.pdf", fields, "out.pdf", flatten=False)

文件输出. pdf现在应该选择两个单选按钮之一。你必须做一些猜测工作,找出哪个按钮的值为1、2和3。
如果你不想使用pypdftk,请使用there are other options

相关问题