как изменить формат страницы во время выполнения?(jasperreport)

Я создал страницу отчета в формате A4 в iReport4.5 и использовать в java-приложении.

Как изменить формат A4 на A5 во время выполнения в приложении java?

1 ответов


прежде чем я покажу вам, как это сделать, обратите внимание, что просто изменение размера страницы, вероятно, не даст вам то, что вы хотите. Это сделает страницу больше или меньше в зависимости от того, что вы хотите, поместите позиционирование элементов не изменится. В вашем случае отчет может даже не компилироваться в зависимости от того, где у вас есть элементы.

у вас есть несколько вариантов, хотя:

  1. сначала вы можете создать второй отчет для формата A5, а затем на бегу время захватить соответствующий отчет в зависимости от того, что вы хотите. Это, вероятно, самое простое решение, но это означает, что вы в конечном итоге почти 2 одинаковых отчета. Любые изменения в будущем вам придется обойтись в двух местах.
  2. во-вторых, если это довольно прямой отчет с типичным макет вы можете использовать что-то вроде Динамический Джаспер для создания отчет в коде java.
  3. наконец, вы можете работать непосредственно против API отчета Jasper к создайте отчет во время выполнения.


Теперь отвечу на ваш вопрос. Сначала загрузите файл JRXml в JasperDesign объект:
//Note JRXMLLoader could also take a File object or 
//InputStream instead of a String as the parameter.
JasperDesign design = JRXmlLoader.load("report.jrxml");

после JasperDesign вы можете установить размер страницы на то, что вы хотите. Бумага A5 от чего я могу сказать 5.83 "× 8.27". Чтобы преобразовать это в размер, который JasperReports понимает, умножьте каждый на 72, получив 420 x 596 (я округлил, поскольку мы должны установить целые числа).

design.setPageHeight(596);
design.setPageWidth(420);

отсюда cointinue на вашем экспорте приключений, как вы обычно.