mpdf在postman工作但不在chrome中工作

时间:2017-01-19 07:00:39

标签: php angularjs mpdf

我尝试使用mpdf生成和下载pdf。它在邮递员工作正常,但很快我尝试使用它不起作用。

这是我的角度休息需求

 $http({
    url: 'http://localhost:8080/services/generatePDF?uniqueID=INV0005',
    method: 'GET',
    headers: {
        'securityToken': '123',
        'Content-Type': 'application/json'
    }
 }).then(function(res) {
    console.log(res)
 }, function(ress) {
    console.log(res)
 })

这是我的PHP代码

header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="filename.pdf"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');


$pdf= new mPDF(); 
$pdf->SetHTMLFooter('<span style="color:#a1a1a1;font-size:12px;padding-left:100px;"> powered by 12thdoor </span>');
$pdf->WriteHTML($stylesheet,1);
$pdf->WriteHTML($body,2);
$pdf->Output('filename.pdf', 'D'); 

这是我得到的错误

bc81
%PDF-1.4
%    
3 0 obj
<</Type /Page
/Parent 1 0 R
/MediaBox [0 0 595.280 841.890]
/TrimBox [0.000 0.000 595.280 841.890]
/Resources 2 0 R
/Group << /Type /Group /S /Transparency /CS /DeviceRGB >> 
/Contents 4 0 R>>
endobj
4 0 obj
<</Filter /FlateDecode /Length 1334>>
stream
x  Y n F g} 

我已经尝试在angularjs中使用application/pdf内容类型标头但仍然无法正常工作。谢谢

1 个答案:

答案 0 :(得分:1)

如何使用AngularJS下载二进制文件

下载二进制文件时,设置responseType

非常重要
$http({
    url: 'http://localhost:8080/services/generatePDF?uniqueID=INV0005',
    //SET responseType
    responseType: 'blob',
    method: 'GET',
    headers: {
        'securityToken': '123',
        'Content-Type': 'application/pdf'
    }
 }).then(function(response) {
    console.log(response.data);
 }, function(response) {
    console.log(response.status);
 })

如果省略responseType,则XHR API默认将UTF-8编码文本转换为DOMString (UTF-16),这会损坏PDF和图像文件。

有关详细信息,请参阅MDN Web API Reference - XHR ResponseType