Я использую функцию Ajax для получения моего контента, и мне нужно экспортировать PDF с успехом jQuery.ajax()
. Как я могу это сделать?
Возможно ли сгенерировать PDF с помощью jQuery?
Ответ 1
jQuery не может (потому что JavaScript не может) создать PDF из данных, нет... он может получить один с вашего сервера (как и любой другой запрос), но он не может его сгенерировать. JavaScript просто не имеет механизма (хотя сейчас есть некоторые варианты HTML5) для создания/сохранения файла, который работает кросс-браузер, особенно двоичный файл.
Ответ 2
Если это вообще возможно, серверная сторона - лучший выбор для создания PDF файлов. Вероятно, это будет быстрее для большинства пользователей, а возврат файла через стандартный HTTP-запрос будет намного более надежным, чем текущие варианты на стороне клиента.
Тем не менее, эта библиотека создаст PDF файл на стороне клиента: http://snapshotmedia.co.uk/blog/jspdf
В браузерах, которые поддерживают URI данных, он может напрямую возвращать PDF. В других браузерах вы можете связать его с компонентом Flash, который называется Downloadify, чтобы выполнить то же самое.
Ответ 3
Если вы извлекаете данные PDF с вашего сервера в свой успех AJAX и должны вывести его своему пользователю в качестве загрузки, его можно выполнить с помощью крошечного бита кодировки base64. Если я правильно понимаю, у вас, скорее всего, есть сценарий, в котором ваш сервер, возможно, вернет PDF или какой-либо другой тип данных при успехе (например, XML). В этом случае у вас есть два шага для обработки запроса:
1) Определите тип содержимого через его заголовок. Ниже приведен пример разделения вашего обработчика на основе ответа:
$.ajax({
type: "POST", url: "/test", data: someData, success: function(response, status, xhr){
var ct = xhr.getResponseHeader("content-type") || "";
if (ct.indexOf(‘xml’) > -1) {
// handle xml here
}
if (ct.indexOf(‘pdf’) > -1) {
// handle pdf here
}
}
});
2) После того, как у вас есть свой PDF-контент, вы можете перенаправить браузер, чтобы показать pdf, используя трюк данных base64. Сначала кодируйте содержимое данных в base64. Существует количество библиотек, чтобы помочь вам сделать это в Javascript. Затем верните содержимое через document.location.href:
document.location.href = 'data:application/pdf;base64,' + base64PDFData;
Это должно получить то, что вам нужно. Теоретически вы можете переслать любой тип контента в браузер в этом методе.
ИЗМЕНИТЬ
Я должен упомянуть, что данные uri, к сожалению, не будут работать в IE из-за ограничений безопасности.
Ответ 4
Я думаю, вы можете использовать этот плагин
Ответ 5
Если HTML, с которым вы имеете дело, является таблицей, вы можете использовать jquery.dataTables для подключения PDF с помощью TableTools. Он использует Flash за кулисами и сильно ограничен при форматировании, но создает PDF.