【问题标题】:Laravel 5: Output tFPDFLaravel 5:输出 tFPDF
【发布时间】:2017-11-18 09:51:21
【问题描述】:

我想在 Laravel 5.5 中使用 tFPDF。我用作曲家添加了包,然后我尝试根据docs 输出它,但没有任何效果。

我尝试直接输出到浏览器:

Route::get('/test',function(){
        $pdfLibrary = new tFPDF\PDF();
       $pdfLibrary->AddPage();

       $pdfLibrary->AddFont('DejaVuSansCondensed', '', 'DejaVuSansCondensed.ttf', true);
       $pdfLibrary->SetFont('DejaVuSansCondensed', '', 14);

       $pdfLibrary->Write(8, 'Hallo!');
       $pdfLibrary->output();           
});

但现场一片空白。当我尝试return $pdfLibrary->output(); 然后它就返回了

%PDF-1.3 3 0 obj endobj 4 0 obj 流 x�u����@S�)>+�p�.......

我也尝试简单地将 pdf 保存到文件中,但即使

$pdfLibrary->output('F', storage_path() . '/test.pdf');

没用。

如何保存和输出 tFPDF 创建的 pdf 文件?

【问题讨论】:

    标签: php pdf laravel-5 fpdf


    【解决方案1】:

    我从SetASign 找到了另一个我想要的包。具有命名空间支持的简单 tFPDF 包。这开箱即用,非常棒。

    我强烈建议使用 SetASing 包而不是 DocNetUk 包,因为 DocNetUK 包有很多怪癖。以下是我在使用 DocNetUK 包时遇到的一些问题:

    1. 输出返回原始二进制文件,见下文如何使用它
    2. 重命名字体名称不起作用。
    3. 方法 tFPDF 已更改为 __construct,因此您每次都必须在构造函数中调用 parent::construct,这是必要的,因为命名空间(参见 What's difference between __construct and function with same name as class has?
    4. 变量名称已随机更改,并且没有相关文档:
      • $this->w =>$this->flt_current_width
      • $this->h =>$this->flt_current_height

    这些更改使 DocNetUK 的版本基本上与所有附加组件不兼容。


    *过时的答案 我终于意识到 tFPDF 的非官方作曲家版本稍微改变了 output 函数的行为。输出函数只返回 pdf 内容,但不能将其保存到文件中,也不能直接在浏览器中呈现。

    这是在 Laravel 中将原始二进制文件显示为 pdf 的方法

     \Response::make($this->output(), 200, ['content-type'=>'application/pdf', 'Content-Disposition' => 'inline; temp.pdf']);
    

    保存原始二进制文件如下:

    Storage::put('file.pdf', $pdfLibrary->output());
    

    或者file_put_contents,如果没有使用 Laravel。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      相关资源
      最近更新 更多