PDFtk不写入某些多行字段

时间:2018-02-19 21:03:40

标签: php pdf pdftk

我正在使用PDFtk从表单条目中填写交互式PDF,但在使用fill_form命令合并FDF文件后,PDF中的某些字段仍为空白。它似乎影响了一些多线字段(FieldFlags: 4096),但不是所有多线字段。

这是来自pdftk /pdf-forms/raw/idaho.pdf dump_data_fields的交互式PDF的字段数据示例:

---
FieldType: Text
FieldName: Employer Name Address incl zip
FieldNameAlt: Employer (Name & Address incl. zip)
FieldFlags: 4096
FieldValue: 
FieldJustification: Left
---
FieldType: Text
FieldName: CarrierAdministrator Claim Number
FieldNameAlt: Carrier/Administrator Claim Number
FieldFlags: 0
FieldValue: 
FieldJustification: Left
---
FieldType: Text
FieldName: Jurisdiction
FieldNameAlt: Jurisdiction
FieldFlags: 0
FieldValue: 
FieldJustification: Left
---
FieldType: Text
FieldName: Jurisdiction Claim No
FieldNameAlt: Jurisdiction Claim No.
FieldFlags: 0
FieldValue: 
FieldJustification: Left
---
FieldType: Text
FieldName: Employers Location Address if different
FieldNameAlt: Employer’s Location Address (if different)
FieldFlags: 4096
FieldValue: 
FieldJustification: Left
---
FieldType: Text
FieldName: Claims Admin Name Address Phone Number
FieldNameAlt: Claims Admin (Name, Address & Phone Number)
FieldFlags: 4096
FieldValue: 
FieldJustification: Left
---

这是临时FDF文件的样子:

%FDF-1.2 1 0 obj<</FDF<< 
/Fields[
    <</T(Employer Name Address incl zip)/V(Name Test Submit)>>
    <</T(CarrierAdministrator Claim Number)/V(Carrier/Administrator Claim Number)>>
    <</T(Jurisdiction)/V(Jurisdiction)>>
    <</T(Jurisdiction Claim No)/V(Jurisdiction Claim No.)>>
    <</T(Employers Location Address if different)/V(Employer’s Location Address (if different))>>
    <</T(Claims Admin Name Address Phone Number)/V(Claims Admin Name)>>
] >> >>
endobj
trailer
<</Root 1 0 R>>
%%EOF

以下是我正在使用的代码示例,如果有帮助的话:

$data = [
    'Employer Name Address incl zip' => $entry[15],               // multiline blank
    'CarrierAdministrator Claim Number' => $entry[93],            // multiline filled
    'Jurisdiction' => $entry[95],                                 // single line filled
    'Jurisdiction Claim No' => $entry[96],                        // single line filled
    'Employers Location Address if different' => $entry["98.1"],  // multiline filled
    'Claims Admin Name Address Phone Number' => $entry[155],      // multiline blank
];

$pdf = new PdfForm('/pdf-forms/raw/idaho.pdf', $data);
$pdf->save('/pdf-forms/flat/idaho.pdf');
$pdf->download();

寻找某种解决方案来填充所有字段,或者至少以某种方式来测试它为什么不起作用。

1 个答案:

答案 0 :(得分:1)

在某些字段名称中实际上有一个双重空格。

  • Employer Name Address incl zip而不是Employer Name Address incl zip
  • Claims Admin Name Address Phone Number而不是Claims Admin Name Address Phone Number

更正了FDF:

%FDF-1.2
1 0 obj <<
  /FDF <<
    /Fields [ <<
        /T (Employer Name  Address incl zip)
        /V (Name Test Submit)
      >> <<
        /T (CarrierAdministrator Claim Number)
        /V (Carrier/Administrator Claim Number)
      >> <<
        /T (Jurisdiction)
        /V (Jurisdiction)
      >> <<
        /T (Jurisdiction Claim No)
        /V (Jurisdiction Claim No.)
      >> <<
        /T (Employers Location Address if different)
        /V (Employer’s Location Address \(if different\))
      >> <<
        /T (Claims Admin Name Address  Phone Number)
        /V (Claims Admin Name)
      >> ]
  >>
>>
endobj

trailer
<<
  /Root 1 0 R
>>
%%EOF