2014-09-25 4 views
0

У нас была страница пользовательского интерфейса Vaadin 7 с несколькими макетами, панелями и диаграммой (браузер будет иметь ScrollBar, так как высота большая). Когда мы пытаемся печатать с использованием JavaScript в коде Vaadin или используя Ctrl + P браузера, он печатает только одну страницу в Firefox 32.0.3; печать нескольких страниц данных только для первой страницы в IE 8.Многостраничная печатная или отчетная библиотека для Vaadin 7 UI

Оба вышеуказанных случая не решили нашу проблему. Как мы можем понять из документации, что прокрутка Vaadin использует структуру DOM, было необычно знать, что такой инструмент не обеспечивает надлежащего параметра Print.

Чтобы описать нашу цель, мы предлагаем . Репортаж вариант в Ваадине для анализа данных. Мы видели некоторые варианты (с использованием JasperReport и т. Д.), Упомянутые в StackOverflow, однако не смогут их реализовать, поскольку нам нужно развернуть это приложение в Google App Engine (GAE), у которого есть неподдерживаемые функции, такие как FileOutputStream и т. Д.

To заключение, это наши проблемы -

  1. Как решить проблему с печатью нескольких страниц в Vaadin 7?
  2. Если мы не сможем решить первую проблему, какая лучшая библиотека отчетов (для PDF или PNG или HTML или Печать), которая поддерживается как Vaadin 7, так и GAE?

Любые рекомендации или предложения, направленные на нас, будут оценены по достоинству.

ответ

0

Печать HTML-страниц в лучшем случае случайна.

У каждого браузера есть свои правила для отображения и разрывов страниц. Мы всегда используем pdf для печати.

iReport/Jasperreports является вещью, которую мы используем большую часть времени

+0

Мы попробовали с образцом кода. Он отлично работает на Ваадине. Проблема заключается в Google App Engine, который не поддерживает java.awt.Font, который используется в Jasper. Есть ли другая библиотека с поддержкой Vaadin7 + GAE? – Sasi

+0

Например, эта тема: http://stackoverflow.com/questions/13485765/reporting-for-java-base-google-app-engine –

+0

Спасибо, Андре. Мы попробуем это. – Sasi

0

Вы можете попробовать это временное решение:

private void setSizeUndefined2Print() 
{ 
    com.vaadin.ui.JavaScript.getCurrent().execute("document.body.style.overflow = \"auto\";" + 
                "document.body.style.height = \"auto\""); 
    UI.getCurrent().setSizeUndefined(); 
    this.setSizeUndefined(); 
} 

Если в некоторых случаях вы должны переключиться на «определенный» размер, следующий метод может быть использовано:

private void setSizeFull2Print() 
{ 
    com.vaadin.ui.JavaScript.getCurrent().execute("document.body.style.overflow = \"\";" + 
                "document.body.style.height = \"\""); 
    UI.getCurrent().setSizeFull(); 
    this.setSizeFull(); 
} 
Смежные вопросы