PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Tuesday, January 4, 2022

[FIXED] MPDF in Laravel can't output (inline) pdf

 January 04, 2022     laravel, laravel-5, mpdf, pdf-generation, php-7.4     No comments   

Issue

I am doing below code in Laravel 5.5 with mpdf 8.0

$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML('Hello World');
$mpdf->Output("test","I");

It outputs gibberish/garbage values, seemingly showing pdf file in raw form.

Some findings

  • If I use $mpdf->Output($reportPath, 'F'); (saving it to file) and the opening that. It opens the file as expected.
  • If I place die(); after $mpdf->Output("test","I"); it shows the document.
  • My suspicion is, it has something something to do with Content-type:application/pdf not being set by default but I have also tried using header("Content-type:application/pdf"); before Output but of no use. it is still showing Content-Type: text/html; charset=UTF-8 in response header in Network tab of chrome (also tried Firefox).

Some back-story

  • It used to work on php7.3 just fine, but I have to update it to php7.4 due to some library and multiple application on a single server scenario.
  • Also start using a sub-domain for my application instead of placing the directories after the domain.

I'm looking for

  • A solution that doesn't require me to place die; at the end of output.
  • Or some clue in on why this has started happening or/and perhaps why I need to place die; after Output.
  • Any other solution.

The goal is to provide some ref. for people encountering same issues in future, since I have spent hours and haven't anything that specifically address such issue.


Solution

Ok, so I found out that I can't just rely on $this->mpdf->Output('test.pdf',"I") to output my result (though it was working previously with the same line) to the browser.

Because for some reason it has started to send Content-Type:text/html value in Content-Type header so I had to change that.

Solution

I did it as below:

return response($this->mpdf->Output('test.pdf',"I"),200)->header('Content-Type','application/pdf');


Answered By - Daniyal Nasir
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing