我尝试使用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
内容类型标头但仍然无法正常工作。谢谢
答案 0 :(得分:1)
下载二进制文件时,设置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