2016-06-13 3 views
4

Я хочу показать PDF в виде Vaadin. Я создаю BrowserFrame и я прохожу StreamResource в формате PDF:Показать PDF-файл в формате Vaadin

StreamResource streamResource = new StreamResource(
       getPresenter().createPdfStreamSource(), report.getName() + ".pdf"); 


BrowserFrame pdf = new BrowserFrame(null, streamResource); 
pdf.setSizeFull(); 

content.addComponent(pdf); 

Этот код создает IFRAME со следующего источника:

http://localhost:8080/my-app/vaadinServlet/APP/connector/0/134/source/mypdf.pdf 

Если я указываю браузер на этот адрес, он показывает PDF должным образом. Однако в моем приложении представление PDF не отображается. Что я делаю не так?

Я тестирую это в Google Chrome.

Редактировать: Я загрузил плагин PDF Viewer на основе PDF.js, и мое приложение отлично работает. Требуется ли специальная настройка модуля чтения PDF-файлов Chrome?

+0

Не могли бы вы показать источник 'getPresenter(). CreatePdfStreamSource()'? – bekce

+0

Возможно, посмотрите на [this] (https://vaadin.com/docs/-/part/framework/components/components-embedded.html) часть книги ... Речь идет о вложении ресурсов в ваш интерфейс - возможно вы просто используете неправильные компоненты. – downdrown

ответ

2

iframe, вероятно, не самый лучший вариант для рендеринга PDF, особенно в мобильных браузерах. Проверьте дополнение WT PDF Viewer, основанное на pdf.js для более совместимого решения.