Я использовал mpdf для создания отчета в формате PDF в моем php-коде. Я вижу файл PDF, когда сохраняю его с помощью Output ($ pdfFilePath), но мне нужно вернуть его в браузер с помощью json, не сохраняя его на сервере, поэтому я использовал Output ($ pdfFilePath, «D»). Ниже приведен мой код, но он возвращает пустую HTML-страницу:
код на стороне сервера в php:
$report = $this->load->view('report', $data, true);
$pdfFilePath = "the_pdf_output.pdf";
$this->load->library('m_pdf');
$pdf = $this->m_pdf->load();
$pdf->SetDisplayMode('fullpage');
$pdf->WriteHTML($report);
$result["success"] = true;
$result["data"] =$pdf->Output($pdfFilePath,"D");
$result["extra"] = $row->extra;
echo json_encode($result);
внешний интерфейс в extjs:
success: function(xhr) {
var response = Ext.decode(xhr.responseText);
if (response.success) {
var html =response.data.replace(/\//g, '')
ui_print(html);
} else {
Ext.example.msg('Error', 'Oops, there has been a problem!');
}
}
вы должны вывести как строка
$result["data"] =$pdf->Output($pdfFilePath,"S");
с помощью D
отправляет данные в браузер напрямую
Более того, я не уверен, что EXT.decode
есть, но я обычно использую JSON.parse
использовать JSON из AJAX:
var response = JSON.parse(xhr.responseText);
console.log(response['data']);
При этом я не уверен, насколько хорошо PDF-файлы могут быть проанализированы в JSON-файлах …
Других решений пока нет …