【问题标题】:Get and save the content generated by PHP using FPDF使用FPDF获取并保存PHP生成的内容
【发布时间】:2016-04-24 21:10:25
【问题描述】:

我使用 FPDF 库显示在线 PDF 文件,并带有输出选项 «I » (将内容输出到浏览器)
然后,我需要能够将其中一些生成的 pdf 保存在我的服务器上(就像输出选项 «F »)

为了做到这一点,我写了这个脚本:

    $pdf_data = file_get_contents('https:/HOST/Folder/file.php');
    $path =__DIR__.'/Folder/file.pdf';
    file_put_contents( $path, $pdf_data );

成功创建了一个带有pdf扩展名的文件到目录,但是:
- 当我尝试打开“pdf”文件时,出现错误:« 格式错误:不是 pdf 或已损坏 »,
- 保存的文件是空的 (?)。

那么,有什么问题吗?
如何获取php文件生成的内容,并将其保存为pdf在我的服务器上?

【问题讨论】:

  • file_put_contents 生成一个文本文件,而不是 PDF 文件。将扩展名更改为 pdf 也不会设置格式
  • 好的,这是第一点。我没有意识到这一点。现在,我将扩展名切换为 .txt 来测试脚本,但保存的文本文件仍然是空的。所以我猜 file_get_contents 也不起作用。
  • 只是让我知道我之前通过设置用户代理修复了 file_get_contents 返回的空内容,如下所示: ini_set('user_agent' , $_SERVER['HTTP_USER_AGENT']);

标签: php pdf save output fpdf


【解决方案1】:

最后,我忘记了这个脚本并找到了一个可行的新解决方案!

我在使用 FPDF 构建的 PHP 代码中设置了两个输出,一个用于在线显示文件,一个用于将文件保存在服务器上。
始终显示 PHP 代码生成的内容,我在第一个输出上用字符串控制 PDF 备份。
因此,当我需要备份时,我使用 Jquery 函数在后台执行 PHP 代码并上传 PDF 文件(隐藏 iframe 也可以)。

在我的 PHP 代码末尾:

<?php
...
if (mycondition) {$string='F';}
else {$string ='I';}
...
$pdf->Output(__DIR__.'/../../Folder/file.pdf',$string);  // save on the server
$pdf->Output('file.pdf','I');  // display on the browser
?>

下面我使用的jQuery函数:

<script type="text/javascript" src="./js/jquery.js"></script>
<script type="text/javascript">
    var phpfile = <?php echo json_encode($Filename); ?>;  // the php file to upload
    function uploadpdf() {
    $.get(phpfile);
    return false; }
</script>  

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多