Печать PDF из extjs - лучшее решение - PullRequest
3 голосов
/ 11 марта 2010

Я пытаюсь распечатать PDF-файл, используя extjs, и любая помощь будет оценена. Моя идея состояла в том, чтобы передать файл pdf с сервера в виде потока, как рекомендовано на http://xmlgraphics.apache.org/fop/0.95/servlets.html#minimal-servlet. Но проблема в том, что сначала я отправляю данные формы через ajax, сохраняю их в БД, создаю PDF с использованием FOP и .... хочу передать полученный PDF вернуться к клиенту. Моя последняя идея - сохранить PDF во временный файл на сервере, вернуть в «extjs» значение «true», а затем снова извлечь временный файл, используя iframe для печати :) Есть ли более правильные решения? или, может быть, у кого-то есть готовый рабочий код для этого?

Ответы [ 2 ]

2 голосов
/ 12 марта 2010

Ну, наконец, я пришел к следующему решению: во-первых, мы используем AJAX-запрос, чтобы сохранить детали формы и генерировать PDF на стороне сервера.

        success : function(form, action) {
            var result = Ext.decode(action.response.responseText)
            if (result.success) {
                this.openForPrint(result.tmpFileName);
            }
        },

Чем мы используем iframe для загрузки и открытия файла

    openForPrint : function(fileSrc) {
        Ext.DomHelper.append(document.body, {
            tag : 'iframe',
            name : 'printIframe',
            src : this.getPrintPalletTagUrl()+'?userAction=actionPrint&tmpFileName='+fileSrc
        });
    }

Такой подход позволяет нам проверять ответ операции сохранения и показывать пользователю полезный диалог в случае сбоя сохранения.

0 голосов
/ 11 марта 2010

Не думаю, что это как-то связано с Ext JS.Вам нужно либо сгенерировать / сохранить PDF-файл и вернуть URL-адрес, как вы упомянули, либо вы можете отправить ответ прямо обратно в браузер с типом содержимого «application / pdf», и поведение браузера по умолчанию будет обрабатывать его.Любой подход является общим для любого внешнего кода.

Я успешно выполнил второй подход, но в среде .NET.Принципы должны быть одинаковыми.

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