Подтвердить что ты не робот

Возможно ли сгенерировать PDF с помощью jQuery?

Я использую функцию Ajax для получения моего контента, и мне нужно экспортировать PDF с успехом jQuery.ajax(). Как я могу это сделать?

4b9b3361

Ответ 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 из-за ограничений безопасности.

Ответ 5

Если HTML, с которым вы имеете дело, является таблицей, вы можете использовать jquery.dataTables для подключения PDF с помощью TableTools. Он использует Flash за кулисами и сильно ограничен при форматировании, но создает PDF.

http://datatables.net/extras/tabletools/