Вопрос по jasper-reports, orientation-changes, ireport – Переключение ориентации страницы в ireport

4

Я читал, что нет никакой возможности обрабатывать смешанные ориентации изначально с помощью iReport, однако, читая документацию, мне интересно, используяJRDefaultScriptlet's beforePageInit() это может быть достигнуто как-то. В моем случае имеется титульная страница с портретным изображением, столько же альбомных страниц, сколько имеется данных для их заполнения, и последняя фронтальная страница.

С другой стороны, кто-нибудь знает:

If this is a feature to be supported in the near futureIf there's an alternative that does as requested and generates a jasper-compliant xml file

Заранее спасибо.

Если вы не можете изменить этот процесс, я не думаю, что вы можете сделать это любым другим способом. Jacob Schoen
В какой формат вы экспортируете? Я знаю, что с помощью PDF вы можете разбить свой отчет на три отдельных файла отчета, титульную страницу, данные, последнюю страницу, а затем выполнить пакетный экспорт PDF. Это учитывает ориентацию страницы каждого отдельного отчета в пакете. Я не уверен, работает ли он с другими форматами, хотя, на мой взгляд, это своего рода хак. Хотя это было бы неплохо. Jacob Schoen
Мне нужно создать один файл JRXML, который содержит обе ориентации, потому что есть другой процесс, который ожидает такой ввод. xain
Я предполагаю, что вы не можете изменить процесс, и вам нужно решение, которое по существу дает вам файл jrxml? Jacob Schoen

Ваш Ответ

2   ответа
3

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

Create your report in landscape mode.

Under Report Properties in iReport set Title on New Page and Summary on New Page to true.

Assuming you are using a standard 8.5" X 11" Letter sized page with all the margins set to 20, set the height of the Title and Summary sections to 572.

Add your static text fields into the appropriate section.

Now for each static text field you need to set the Rotate property to Left (well it could actually be Right, the point is they all need to be the same.

Of course add the all the other fields you want into the appropriate bands for page header, data, etc.

Export your report.

Note: если у вас есть какие-либо изображения, которые нужно добавить в раздел «Заголовок» или «Сводка», вам необходимо соответствующим образом повернуть их за пределами iReport и сохранить их. Затем установите повернутое изображение как изображение в отчете. К сожалению, тег изображения, похоже, не имеет свойства поворота, так как это облегчит жизнь.

Также, если вы не установите свойства, перечисленные в шаге 2, вы не сможете установить высоту полос заголовка и сводки на соответствующую ширину. Если вы используете бумагу другого размера и / или Поля Простой способ определить максимальный размер (который вам понадобится) состоит в том, чтобы установить высоту полосы на очень большое число. Затем появится всплывающее окно и сообщит вам, что оно слишком большое и каков максимальный размер.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded xain
2

в будущем они добавят объектный вызов JasperBook или что-то в этом роде, где вы можете без проблем добавлять разные подотчеты различной ориентации, но на данный момент вы имитируете это, делая разные отчеты и присоединяйтесь к ним, прежде чем показывать их.

И.Е.

// Создаем отчеты отдельно

        InputStream report1 = (InputStream) getClass().getResourceAsStream("/com/app/jasper/reportPortrait.jasper");
        InputStream report2 = (InputStream) getClass().getResourceAsStream("/com/app/jasper/reportLandscape.jasper");
        InputStream report3 = (InputStream) getClass().getResourceAsStream("/com/app/jasper/reportPortrait.jasper");

        JasperPrint jasperPrint = JasperFillManager.fillReport(report, map, conn);
        JasperPrint jasperPrint2 = JasperFillManager.fillReport(report2, map, conn);
        JasperPrint jasperPrint3 = JasperFillManager.fillReport(report3, map, conn);

        JRPdfExporter exp = new JRPdfExporter();

// Добавить объекты JasperPrint в ArrayList

        List list = new ArrayList(); 

        list.add(jasperPrint);
        list.add( jasperPrint2 );
        list.add(jasperPrint3);

// И сказать экспортеру присоединиться к списку отчетов.

        exp.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, list); 
        exp.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
        exp.exportReport();

Я делаю это в своих отчетах, и это работает. Удачи!

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы