【问题标题】:php open fdf file in browserphp在浏览器中打开fdf文件
【发布时间】:2013-02-19 17:01:38
【问题描述】:

我正在使用 cakephp。我需要填写一个 PDF 表格,通过从http://koivi.com/fill-pdf-form-fields 获取代码,我已经为其生成了 fdf 文件。

fdf 文件会很好地生成,但我无法在浏览器中打开该文件。我已将实时 PDF 表单 URL 放在 fdf 文件中,并使用以下标题显示该文件。但显示fdf文件的原始内容。

header("Content-type: application/vnd.fdf");
echo file_get_contents($fdf_doc);

请有人帮忙在浏览器中显示 pdf 文件和 fdf 文件中的数据。

这是我针对上面两行代码得到的代码

%FDF-1.2
%âãÏÓ
1 0 obj
<< 
/FDF << /Fields [ <</T(First_Name_dyoZTsSYj7AaZZORUqwHRg)/V(m)>><</T(Last_Name_wtE2EKuY4zimhkLHVtbImQ)/V(Jhon)>><</T(Address_iw9xRob*WcfI6Yx1VvF6lA)/V(Steve)>><</T(City_hdYMQhyO73*HEfQYtnWpyg)/V(lahore)>><</T(ZIP_Code_lSOicM9dFoK1WNlOn*BMdg)/V(232323)>><</T(Phone_l3ZSQxhOYwSFuzdOta-WNw)/V(98989898)>><</T(Arrival_Date_Jy6nv5X38KS1lyDYw-*uAQ)/V(01/30/2010)>><</T(Departure_Date_uFmnQc6dxs4jn7s*g32RAA)/V(02/03/2010)>><</T(Number_of_guest_0iHYhUsjJEAoMGsWL9koXA)/V(5)>><</T(Flight_Number_zY9NGizqNvliyJFB0IEmxA)/V(PK-506)>><</T(Time_N18PoY40LFC6LCUUBXb4JA)/V(16:08)>><</T(ADDITIONAL_INFO_0MGHwGHCfZmli5zV6WpKPA)/V(this is for testing for hotel registration)>><</T(file_name)/V(AccommodationRegistration1.pdf)>>] 
/F (http://example.com/pdf_files/AccommodationRegistration1.pdf) /ID [ <2deb20b6495e049130fbca026c4fd1d3>
] >> 
>> 
endobj
trailer
<<
/Root 1 0 R 

>>
%%EOF

【问题讨论】:

  • 我猜你的问题已经在这里回答了:stackoverflow.com/a/1390496/1249581.
  • pdftk 是第三方工具,需要安装在服务器上。如果我们可以在没有 pdftk 的情况下做到这一点,那就更好了。
  • 来自php.net/manual/en/function.file-get-contents.php 关于file_get_contents 的注意警告此函数可能返回布尔值 FALSE,但也可能返回非布尔值,其计算结果为 FALSE。请阅读有关布尔值的部分以获取更多信息。使用 === 运算符测试此函数的返回值。
  • 为什么要在浏览器中打开 FDF 文件?您需要执行一些代码或程序来合并 FDF 文件和可填充的 PDF 文件,例如建议的pdftk。同一个站点有一个教程:koivi.com/fill-pdf-form-fields-filled。您是否打算下载用户的 FDF 数据并手动将数据与 PDF 合并?
  • pdftk 在共享主机上不可用,我们需要自动化流程来做到这一点。

标签: php cakephp pdf fdf


【解决方案1】:

在回显文件后首先尝试 exit() 以防止 CakePHP 将输出添加到响应中。

一种更简洁的方法是使用 CakeResponse 传递文件:

return $this->response->file($fdf_doc);

【讨论】:

  • 这会打开文件但不填充数据。我正在尝试解决问题
【解决方案2】:

原因是浏览器无法识别内容类型。
所以它认为是纯文本,不知道这是PDF。
您的内容类型无效:

header("Content-type: application/vnd.fdf");

试试这个:

header('Content-type: application/pdf');

【讨论】:

  • 不是普通的pdf文件,是XFDF数据。
  • 但是浏览器似乎对application/vnd.fdf一无所知
【解决方案3】:

【讨论】:

  • 我已经使用 PDFTK 从 FDF 文件创建了 PDF 文件。我没有找到在浏览器中显示 FDF 文件的任何直接解决方案。虽然我在网上搜索以在浏览器中显示 FDF 文件时找到了线索,但它没有用。感谢大家参与寻找解决方案
猜你喜欢
  • 2011-04-21
  • 2014-03-19
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多