如何在不写入临时文件的情况下使用pdftk fill_form

时间:2013-07-30 21:55:21

标签: mysql pdf pdf-generation fpdf pdftk

我正在尝试用我的mysql数据库中的数据填充pdf报告。它在我的本地机器上工作正常,但当我将其上传到www.000webhost.com时,不会生成pdf文档。

我知道每次单击打印报告时,文档都会将临时文件写入我的文件夹。任何人都可以告诉我为什么它不能在托管服务提供商上运行以及如何解决这个问题。我认为这是一个安全问题。

我是否必须编写临时文件。为什么我不能使用$ fdf变量来填充报告而不是临时文件?

$fdf_fn= tempnam( '.', 'fdf' );
$fp= fopen( $fdf_fn, 'w' );
if( $fp ) {
    fwrite( $fp, $fdf );
    fclose( $fp );

//attachment for view
header(   'Content-type: application/pdf' );
header(   'Content-disposition: inline; filename=TEST.pdf');

passthru(   "pdftk ./../../reports/TEST.pdf fill_form ". $fdf_fn.' output - flatten' );

unlink( $fdf_fn ); // delete temp file

1 个答案:

答案 0 :(得分:0)

  

任何人都可以告诉我它为什么不在托管服务提供商上工作以及如何工作   我可以解决这个问题。我认为这是一种安全感   问题。

我的猜测您只是在所需目录中没有写入权限。

您在当前工作目录(.)中创建临时文件。根据您的托管服务提供商和HTTP服务器配置,当前工作目录不是您认为也不可写的。特别是因为您的程序可能会使用 www nobody 身份运行。

我认为你必须创建然后调整你的"临时"目录 - 或使用"世界可写"位置,例如/tmp

最后,你有一个向上移动的相对路径"在你的计划中:./../../reports/TEST.pdf fill_form这在你的托管上几乎没有机会有效......