我试图通过FPDM填写PDF表单,如下例所示:http://www.fpdf.org/en/script/script93.php
填写文本,日期,小数,...输入正常,但我无法找到如何检查复选框和分组复选框(单选按钮)。这是两个问题:
true
或"true"
或"1"
或1
或"checked"
或"on"
或"yes"
不激活复选框(也区分大小写测试)。我必须设置哪个值来激活复选框?"FPDF-Merge Error: field yourtype not found"
。什么是正确的名字? Adobe Acrobat Pro DC显示名称" yourtype"作为组中所有复选框的名称。在字段列表中,它显示分组的复选框为" yourtype#0"," yourtype#1"," yourtype#2"等等。但是脚本没有&似乎能够找到任何这个名字。我也试过像#34; yourtype [1]"没有运气。一旦我可以访问它们,我是否必须为其中一个设置值,还是直接指定(整数?)值?我的例子:
<?php
require('fpdm.php');
$fields = array(
'forname' => 'Jon Dow', // text input: works
'mycheck1' => true, // checkbox: doesn't work! Also tried "true", 1, "1", "yes", "on", ... (with case-sensitive)
'yourtype' => true, // grouped checkbox (radio button): doesn't even find input with that name.
);
$pdf = new FPDM('template.pdf');
$pdf->Load($fields, true);
$pdf->Merge();
$pdf->Output();
?>
编辑:FPDM类似乎不支持设置复选框和下拉列表等类型。在文件fpdm.php
中,标题中的以下内容表示ToDo部分:extends filling to another form fields types (checkboxes,combos..)
答案 0 :(得分:2)
好的,我遇到了这个问题,并一直在尝试使用FPDM来解决这个问题。复选框字段在Adobe Acrobat上具有“导出”值,默认情况下该值为“是”&#39;但它可以是另一个值,取决于语言或由用户手动更改。 如果在FPDM上分配了该值,则在下载并在Adobe的pdf阅读器中查看时,它将正确标记该复选框。但是,网络浏览者似乎存在问题。 Firefox将在复选框内显示叠加为字符串的文本,而chrome根本无法显示任何检查。这可能是我的问题,但由于我只需要pdf阅读器支持,我没有做进一步的研究。
答案 1 :(得分:1)
如你所述,fpdm不支持。我正在寻找另一个允许这样做的库,我发现了这个:php-pdftk
代码示例:
// Fill form with data array
$pdf = new Pdf('doc.pdf');
$pdf->fillForm([
'CheckBox1' =>'Yes',
'RadioButton'=>'Choice1',
'name'=>'Wizard'
])
->needAppearances()
->saveAs('doc_filled.pdf');
答案 2 :(得分:0)
对于预填充pdf,我使用了https://www.sitepoint.com/filling-pdf-forms-pdftk-php/此链接。
我们可以按照以下步骤操作: 1.安装pdftk工具包和pdftk服务器。 2.使用cmd中的以下命令将pdf转换为pdftk pdf: pdftk your.pdf输出coverted.pdf (在脚本中使用转换后的pdf) 3.按照 - https://www.sitepoint.com/filling-pdf-forms-pdftk-php/中提到的步骤进行操作 4.现在使用以下命令: pdftk sample.pdf dump_data_fields输出fields.txt (使用以下各种选项生成的文本文件)
FieldType:按钮 FieldName:topmostSubform [0] .Page5 [0] .Gender [0] FieldNameAlt:8。性别。男 FieldFlags:0 fieldValue方法: FieldJustification:左 FieldStateOption:关闭
FieldType:按钮 FieldName:topmostSubform [0] .Page5 [0] .Gender [1] FieldNameAlt:女 FieldFlags:0 fieldValue方法: FieldJustification:左 FieldStateOption:女性
5.)在php中,我们可以这样工作: require_once(dirname( FILE )。'/../../../ vendor / fpdm / PdfForm.php');
$male = $female = '';
if ($customer_data['gender'] == 'male') {
$male = 'male';
$female = 'Off';
} else {
$male = 'Off';
$female = 'Female';
}
$field_data = array(
'topmostSubform[0].Page5[0].Gender[0]' => $male,
'topmostSubform[0].Page5[0].Gender[1]' => $female,
);
$pdf = new \PdfForm(dirname(__FILE__) . '/../../../vendor/fpdm/ssn_form.pdf', $field_data);
// $pdf->save('outputs/form-filled.pdf');
$pdf->save('outputs/form-filled.pdf');
//$pdf->download();
$file = dirname(__FILE__) . '/../../../outputs/form-filled.pdf';
$filename = 'form-filled.pdf';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
@readfile($file);
exit;
6。)复选框通过使用txt文件中FieldStateOption中的值预先填充。
谢谢,我希望这会有所帮助。