【发布时间】:2014-09-02 13:20:18
【问题描述】:
http://www.russellyazbeck.com/aanasea
填写表格并下载 PDF 后,它会在浏览器窗口中打开,并且所有字段都已正确填充。然后我右键单击并另存为,然后在 Adobe Reader 中打开 PDF。所有库存字段都消失了。即使我转到工具 > 字段 > 编辑字段,库存字段也不存在。
但是,如果我在同一个 PDF 上运行“pdftk doc.pdf dump_data_fields”,我可以看到库存字段确实存在相应的值。
为什么独立阅读器看不到这些字段?
我在 Adobe Acrobat 中创建了这个 PDF,导出了 field.fdf 文件,使用 pdftk 将它们合并,然后使用 pdftk 输出了 template.pdf。
http://www.russellyazbeck.com/aanasea/template.pdf
这里是 PHP
<?php
require('fpdm.php');
$today = date("F j, Y");
$fields = array(
'todaysDate' => $today,
'invoiceNumber' => $_POST["invoice_number"],
'customerName' => $_POST["customer_name"],
'customerName2' => $_POST["customer_name"],
'address' => $_POST["address"],
'cityStateZip' => $_POST["city"] . ', ' . $_POST["state"] . ' ' . $_POST["zip"],
'phoneNumber' => $_POST["phone_number"],
'email' => $_POST["email"],
'rentalDates' => $_POST["date_from"] . " - " . $_POST["date_to"],
);
$inventory = array (
$_POST["inventory0"],
$_POST["inventory1"],
$_POST["inventory2"],
$_POST["inventory3"],
$_POST["inventory4"],
$_POST["inventory5"],
$_POST["inventory6"],
$_POST["inventory7"],
$_POST["inventory8"],
$_POST["inventory9"],
$_POST["inventory10"],
$_POST["inventory11"],
$_POST["inventory12"],
$_POST["inventory13"],
$_POST["inventory14"],
$_POST["inventory15"],
$_POST["inventory16"],
$_POST["inventory17"],
$_POST["inventory18"],
);
$unit = array (
$_POST["unit0"],
$_POST["unit1"],
$_POST["unit2"],
$_POST["unit3"],
$_POST["unit4"],
$_POST["unit5"],
$_POST["unit6"],
$_POST["unit7"],
$_POST["unit8"],
$_POST["unit9"],
$_POST["unit10"],
$_POST["unit11"],
$_POST["unit12"],
$_POST["unit13"],
$_POST["unit14"],
$_POST["unit15"],
$_POST["unit16"],
$_POST["unit17"],
$_POST["unit18"],
);
$price = array (
$_POST["price0"],
$_POST["price1"],
$_POST["price2"],
$_POST["price3"],
$_POST["price4"],
$_POST["price5"],
$_POST["price6"],
$_POST["price7"],
$_POST["price8"],
$_POST["price9"],
$_POST["price10"],
$_POST["price11"],
$_POST["price12"],
$_POST["price13"],
$_POST["price14"],
$_POST["price15"],
$_POST["price16"],
$_POST["price17"],
$_POST["price18"],
);
$subtotal = 0;
for ($i=0, $z=count($inventory); $i<=$z; $i++) {
$subtotal = $subtotal + ($unit[$i] * $price[$i]);
}
$subtotal = $subtotal;
$deposit = $subtotal * ($_POST["deposit"] / 100);
$tax = $subtotal * ($_POST["tax"] / 100);
$deductions = $_POST["deductions"];
$balanceDue = $subtotal + $tax - $deductions;
$allTotal = $subtotal + $tax;
$c = 0;
for ($i=0, $z=count($inventory); $i<=$z; $i++) {
if ($inventory[$i] !== NULL) {
$fields[inventory . $c] = $inventory[$i];
$fields[unit . $c] = $unit[$i];
$fields[price . $c] = "$" . money_format('%i', $price[$i]);
$fields[total . $c] = "$" . money_format('%i', ($unit[$i] * $price[$i]));
$c++;
}
};
$fields[subtotal] = "$" . money_format('%i', $subtotal);
$fields[deposit] = "$" . money_format('%i', $deposit);
$fields[tax] = "$" . money_format('%i', $tax);
$fields[deductions] = "$" . money_format('%i', $deductions);
$fields[balanceDue] = "$" . money_format('%i', $balanceDue);
$fields[allTotal] = "$" . money_format('%i', $allTotal);
$pdf = new FPDM('template.pdf');
$pdf->Load($fields, true); // second parameter: false if field values are in ISO-8859-1, true if UTF-8
$pdf->Merge();
$pdf->Output();
?>
【问题讨论】:
-
不幸的是,您的 pdf 链接返回 404 错误。不过,我会假设它的表单是 xfa 和 AcroForm 表单的混合体。您的代码、浏览器和 pdftk 只能查看/操作 AcroForm 部分,但 Adobe Reader 会显示 xfa 信息。
-
修复了 pdf 链接。我会检查你提到的那些事情。谢谢。
-
我看了pdf。它不包含我假设的混合形式限制。因此,您能否提供一份已归档的 pdf。
-
您可以在我提供的第一个链接下载填写好的pdf。