Я хотел бы скачать PDF, нажав кнопку на веб-странице, используя php и node.js
Для тестирования я получил pdf, как и должен, и все в порядке, позвонив напрямую на сервер узла.
но используя PHP в качестве посредника, PDF не работает
Как я могу это исправить, чтобы я просто мог изменить имя файла в PHP и отправить его в угловое приложение
Другое дело, что если я открываю PDF из программного обеспечения Adobe, оно работает, но в браузере Chrome я получил, что файл поврежден
это поток:
угловая : $window.location.assign("server-pdf.php)
;
php: отправка HTML-строки на сервер узла и получение pdf-файла в качестве ответа для его передачи клиенту
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: text/html',
)
);
curl_setopt($ch,CURLOPT_POST, count($parameters));
curl_setopt($ch,CURLOPT_POSTFIELDS,
http_build_query($parameters));
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
curl_setopt($ch, CURLOPT_URL, $url);
$res = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$headers = curl_getinfo($ch);
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="file.pdf"');
echo $res;
код node.js — кукловод
let browser, buffer
try {
browser = await puppeteer.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox'],
})
const page = await browser.newPage()
await page.setContent(html, { waitUntil: 'networkidle2' })
buffer = await page.pdf({format: 'A4'})
} finally {
try {
browser.close()
} catch (err) {
this.logger.error('puppeteer browser was not closed', err)
}
}
return buffer
}
затем с помощью коа я возвращаю тело
ctx.response.set('Content-Type', 'application/pdf')
ctx.body = buffer
Я иду строку PDF, если я печатаю результат в PHP, это выглядит так:
%PDF-1.4
%��
1 0 obj
<</Creator (Chromium)
/Producer (Skia/PDF m72)
/CreationDate (D:20190110075210+00'00')
/ModDate (D:20190110075210+00'00')>>
endobj
3 0 obj
<</Type /XObject
/Subtype /Image
/Width 150
/Height 100
/ColorSpace /DeviceRGB
/BitsPerComponent 8
/Filter /DCTDecode
/ColorTransform 0
/Length 3081>> stream
JFIF``;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 65C
Задача ещё не решена.
Других решений пока нет …