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

Java 如何在运行时更改页面格式?(jasperreport),java,jasper-reports,Java,Jasper Reports,我在iReport4.5中创建了一个A4格式的报告页面,并在java应用程序中使用 如何在java应用程序的运行时将A4格式更改为A5格式?在我向您演示如何执行此操作之前,请注意,仅更改页面大小可能无法满足您的需要。它会使页面变大或变小,这取决于你想要什么,放置元素的位置不会改变。在您的情况下,报告甚至可能无法编译,这取决于您将项目布置在何处 不过,您有几个选择: 首先,您可以为A5格式创建第二个报告,然后 在运行时,根据需要获取适当的报告。 这可能是最简单的解决方案,但它确实意味着你最终会失败

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


如何在java应用程序的运行时将A4格式更改为A5格式?

在我向您演示如何执行此操作之前,请注意,仅更改页面大小可能无法满足您的需要。它会使页面变大或变小,这取决于你想要什么,放置元素的位置不会改变。在您的情况下,报告甚至可能无法编译,这取决于您将项目布置在何处

不过,您有几个选择:

  • 首先,您可以为A5格式创建第二个报告,然后 在运行时,根据需要获取适当的报告。 这可能是最简单的解决方案,但它确实意味着你最终会失败 几乎有两份相同的报告。意味着未来的任何变化 你必须在两个地方做
  • 第二,如果它是一份相当直截了当的报告,带有典型的 布局您可以使用类似于生成 java代码中的报告
  • 最后,您可以直接使用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(我四舍五入,因为我们必须设置整数)


    从那里你可以像平常一样继续你的出口冒险。

    我试过了。不会引发任何错误,并且输出pdf不会从8.5x11in更改。我还直接在jrxml中设置了高度和宽度。我不知道还能做什么。有什么建议吗?
    design.setPageHeight(596);
    design.setPageWidth(420);