如何清理PHP数据以写入PDF文件?

时间:2014-11-16 21:11:08

标签: php pdf fpdf

我在使用FPDF将数据库结果写入PDF时遇到了很多问题,似乎在数据库中返回的数据中存在不受支持的数据或字符或者某些东西。

  • PDF文件的编写和下载没有任何错误,但偶尔我会得到一个看起来像这样的页面:

enter image description here

星号缺少页面。现在,我正在尝试通过函数运行每个项目来清理数据:

public function cleanPDFData($data){

        $data = utf8_decode($data);
        $data = trim($data);
        $data = preg_replace( "/\r|\n/", "", $data);

        return $data;

    }

但我仍在破坏页面。

  • 如果我用字符串替换查询结果,则PDF会完美生成[即返回“测试”; ]错误在数据本身

  • 如果我在数据库中查看记录,则不会出现任何类型,正确的数据类型,没有有趣的字符,没有丢失的数据。我不知道还有什么可以找。

  • 如果我开始在空白页面之前删除记录,PDF将再次完美地生成自己。

  • 不会抛出任何错误

我没有想法,我最好的猜测是我的php脚本试图将某种不受支持的字符或数据传递给FPDF - 但我不知道它可能是什么!

这是实际的PDF:sample-pdf.pdf

更新

好的 - 我想我发现了部分问题,这里是更新的清洁功能:

public function cleanPDFData($data){

        if(strlen($data) <= 0){$data = '-';}

        $data = trim($data);
        $data = str_replace('/', '-', $data);
        $data = iconv('UTF-8', 'ISO-8859-1', $data);
        $data = preg_replace( "/\r|\n/", "", $data);

        return $data;

    }

因此,一旦删除了“/”字符,PDF将正确生成,但现在我没有[有时]需要的斜杠(/)。 如何生成PDF以确保正确显示所有特殊字符?

1 个答案:

答案 0 :(得分:1)

问题原来是压缩。

您可以通过以下方式禁用压缩:

$pdf->setCompression(false);

感谢Olivier在FPDF论坛上的发言。