我正在使用PHP FPDF将HTML转换为PDF,我可以同时使用fpdf output()参数'I'和'D'吗?

4urapxun  于 2023-11-16  发布在  PHP
关注(0)|答案(1)|浏览(82)

我正在使用PHP和fpdf收集表单数据并生成输出到PDF文件。我想直接在浏览器中打开生成的PDF文件,并自动将PDF文件保存到客户端。首先我可以通过在output()命令中使用“I”参数来实现,然后使用“D”参数。我可以同时使用这两个命令,以便PDF文件将被自动保存,用户也将立即看到PDF文件在浏览器中?
注意:我不想强制用户执行其他步骤,如保存PDF或打开下载的PDF。这两个步骤都应该自动完成。
我可以同时使用Output()“F”和“I”参数,但“F”会将文件保存到服务器端。
我试着跟随:

file = $customer.'.pdf';
$pdf-> output($file,'D');
$pdf-> output($file,'I');

字符串
还有:

file = $customer.'.pdf';
$pdf-> output($file,'I');
$pdf-> output($file,'D');


在这两种情况下,第一行被执行,而不是后面。

ryevplcw

ryevplcw1#

要理解为什么这是没有意义的,你必须了解一点关于网络是如何工作的:

  • “用户代理”(通常是Web浏览器)发送一个带有URL和其他一些数据(方法、头,在某些情况下是主体数据,如提交的表单)的请求
  • 服务器对该请求做它喜欢做的任何事情,并发送一个由 * 状态 *、一些 * 头 * 和一些 * 内容 * 组成的 * 响应 *。
  • 然后用户代理(浏览器)根据该响应决定要做什么

请注意,服务器不可能为一个请求发送两个响应,或者在浏览器上显式地命令操作,只发送如何处理响应的建议。
在FPDF的情况下,“D”和“I”选项都发送PDF的 * 内容 * 作为响应的主体。它们之间唯一的区别是它们发送不同的 * 头 * -具体来说,是“内联”的Content-Disposition头。(建议浏览器直接显示内容)或“附件”(建议浏览器将文件保存到本地目录,或显示“保存为.”对话框,以及建议的文件名)。
虽然可能有一些复杂的技巧,你可以做客户端JavaScript,你最好选择一个或另一个:

  • 使用'D',用户可以立即打开文件,一旦他们保存它
  • 使用“I”并建议用户按Ctrl-S或Cmd-S自行保存

相关问题