如何在运行时更改页面格式?(jasperreport)

我在iReport4.5中创建了一个A4格式的报表页面,并在java应用程序中使用。

如何在java应用程序中运行时将A4转换为A5格式?

在我向您展示如何执行此操作之前,请注意,仅更改页面大小可能无法满足您的需求。 它会根据您的需要使页面变大或变小,放置元素的位置不会改变。 在您的情况下,报告甚至可能无法编译,具体取决于您所放置项目的位置。

你确实有两个选择:

  1. 首先,您可以为A5格式创建第二个报告,然后在运行时根据您的需要获取相应的报告。 这可能是最简单的解决方案,但它确实意味着您最终得到了近2个相同的报告。 这意味着将来你必须在两个地方做任何改变。
  2. 其次,如果它是一个具有典型布局的相当直接的报告,您可以使用Dynamic Jasper之类的东西来生成您的java代码报告。
  3. 最后,您可以直接使用Jasper Report的API在运行时生成报告。

现在回答你的问题。 首先将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); 

从那里你可以像往常那样对你的出口冒险进行衔接。