Можно ли создавать PDF с помощью jQuery? - PullRequest
16 голосов
/ 20 декабря 2010

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

Ответы [ 6 ]

16 голосов
/ 20 декабря 2010

jQuery не может (потому что JavaScript не может) создать PDF из данных, нет ... он может получить один с вашего сервера (как любой другой запрос), но он не может сгенерировать его. В JavaScript просто нет механизма (хотя в настоящее время реализуются некоторые опции HTML5) для создания / сохранения файла, который работает в разных браузерах, особенно двоичного файла.

5 голосов
/ 15 января 2014

Я думаю, вы можете использовать этот плагин

http://parall.ax/products/jspdf

5 голосов
/ 10 декабря 2012

Если вы извлекаете данные 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;

Это должно получить то, что вам нужно.В этом методе теоретически можно перенаправить любой тип содержимого в браузер.

EDIT :

Следует отметить, что данные URI, к сожалению, не будут работать в IE из-за ограничений безопасности .

5 голосов
/ 20 декабря 2010

Если это вообще возможно, серверная сторона - лучший выбор для создания PDF-файлов.Вероятно, это будет быстрее для большинства пользователей, и возврат файла по стандартному HTTP-запросу намного надежнее текущих параметров на стороне клиента.http://snapshotmedia.co.uk/blog/jspdf

В браузерах, которые поддерживают URI данных, он может возвращать PDF-файл напрямую.В других браузерах вы можете соединить его с компонентом Flash под названием Downloadify, чтобы выполнить то же самое.

3 голосов
/ 19 февраля 2018

Добавьте это к вашему сценарию:

<script src="https://docraptor.com/docraptor-1.0.0.js"></script>
DocRaptor.createAndDownloadDoc("YOUR_API_KEY_HERE", {
    test: false, // test documents are free, but watermarked
    type: "pdf",
    name: planStatus+"_" +assessmentYear+"_"+employeeId+ ".pdf",
    document_content: document.querySelector('#MyDoc').innerHTML, // use this page's HTML
    // document_content: "<h1>Hello world!</h1>",               // or supply HTML directly
    // document_url: "http://example.com/your-page",            // or use a URL
    // javascript: true,                                        // enable JavaScript processing
    // prince_options: {
    //   media: "screen",                                       // use screen styles instead of print styles
    // }
})
2 голосов
/ 09 февраля 2013

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...