Попытка отобразить PDF, возвращенный ajax

Я пытаюсь получить отчет в формате PDF, созданный jsreport, и отобразить его в новом окне/вкладке.

Ответ ajax содержит данные, которые выглядят как содержимое PDF:

%PDF-1.4
1 0 obj
<<
/Title ...

Когда я пытаюсь отобразить данные с помощью

window.open('data:application/pdf;base64,' + data);

открывается новая, пустая вкладка - ничего не отображается.

Когда я пытаюсь:

window.open('data:application/pdf,' + data);

открывается новая вкладка с PDF-плагином, говорящая о том, что содержимое неверно. URL-адрес отображается как:

data:application/pdf,%PDF-1.410obj<</Title(%EF%BF%BD%EF%BF%BD)/Creator(%EF%

Что я делаю не так?


person Valentin Heinitz    schedule 09.07.2015    source источник


Ответы (1)


Из моего опыта вы сталкиваетесь с различными проблемами кросс-браузера с ajax и pdf. Предполагая, что вы получаете PDF-файл, отправляя его на сервер jsreport, для этого проще и стабильнее использовать просто простую публикацию http-формы на новой вкладке.

<form method='POST' target='_blank' action='http://<jsreport>/api/report' id='jsrForm'>
        <input hidden='true' type='text'name='template[shortid]' value="xykdJcxR5"/>       
        <input hidden='true' type='text'name='data[foo]' value="1"/>
</form>

Отправка этой формы должна открыть новую вкладку с отчетом

document.getElementById("jsrForm").submit();

Вы также можете проверить эту документацию для поддержки браузера jsreport и рендеринга.

person Jan Blaha    schedule 10.07.2015