Загрузка PDF в Ext.Window - PullRequest
       1

Загрузка PDF в Ext.Window

1 голос
/ 25 ноября 2010

У меня есть сервлет, который возвращает PDF.То, что я пытаюсь сделать, это загрузить PDF в Ext.Window.Ниже приведен пример источника

            Ext.getCmp('hisAmpPhyWin').load(
                    {
                        url:'servlet/Servlet/',
                        params: {xhtml:xhtmlData},
                        text: 'Loading PDF...',
                        scripts: false
                    });

Где 'hisAmpPhyWin' - это экземпляр Ext.Window.

Дело в том, что он показывает содержимое PDF (я имею в виду символы ascii), а не фактический PDFбраузер.

Пожалуйста, помогите решить эту проблему.

Ответы [ 3 ]

5 голосов
/ 25 ноября 2010

Я думаю, вам лучше использовать для этого тег IFRAME.

var win = new Ext.Window({
  title: 'PDF Content',
  width: 420,
  height: 320,
  plain:true,
  html: String.format(
      '<iframe src="servlet/Servlet?p1={0}&p2={1}" width="400" height="300" />',
      xhtmlData.p1, xhtmlData.p2)
})
win.show();

Примечание: браузер только открывает ваши данные в формате PDF, если ему известно, что тип контента равен application/pdf, здесь вы используете метод AJAX .load(), который игнорирует тип содержимого, возвращаемый из ответа сервлета, однако, если вы обращаетесь к нему напрямую с помощью IFRAME, браузер применит правильный формат MIME .

Не забудьте убедиться, что каждый экземпляр вашего окна уничтожен (closeAction = 'close', который установлен по умолчанию), иначе он будет снова и снова открывать один и тот же документ PDF.

0 голосов
/ 31 января 2014
Ext.onReady(function () {
    Ext.create({
        title: 'My PDF',
        xtype: 'panel',
        width: 600,
        height: 400,
        items: {
            xtype: 'box',
            autoEl: {
                tag: 'iframe',
                style: 'height: 100%; width: 100%',
                src: '/files/pdf-sample.pdf'
            }
        },
        renderTo: 'output'
    });
});
0 голосов
/ 25 ноября 2010

Я не думаю, что вы можете сделать это изначально, но есть действительно хороший UX, который должен это делать.

http://www.sencha.com/forum/showthread.php?23983-ux.Media-.Flash-Flex-Components-2.1.2&highlight=ux.Media

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