通过Java代码生成PDF文件

本文详细介绍JaspersoftStudio的使用方法,包括模板制作、编译、依赖导入及中文处理技巧,帮助读者掌握复杂布局报告的设计。
部署运行你感兴趣的模型镜像

使用工具介绍

  模板工具Jaspersoft Studio。Jaspersoft Studio是JasperReports库和JasperReports服务器的基于Eclipse的报告设计器; 它可以作为Eclipse插件或作为独立的应用程序使用。Jaspersoft Studio允许您创建包含图表,图像,子报表,交叉表等的复杂布局。您可以通过JDBC,TableModels,JavaBeans,XML,Hibernate,大数据(如Hive),CSV,XML / A以及自定义来源等各种来源访问数据,然后将报告发布为PDF,RTF, XML,XLS,CSV,HTML,XHTML,文本,DOCX或OpenOffice。

下载

JasperReport官网下载 https://community.jaspersoft.com/community-download

模板制作

  1. 打开Jaspersoft Studio ,新建一个project, 步骤: File -> New -> Project-> JasperReportsProject
    在这里插入图片描述
  2. 新建一个Jasper Report模板,在 Stidio的左下方Project Explorer 找到刚才新建的Project (我这里新建的是DemoReport),步骤:项目右键 -> New -> Jasper Report
    在这里插入图片描述
  3. 选择 Blank A4 (A4纸大小的模板),然后 Next 命名为test01.jrxml.
    在这里插入图片描述
      如图所示,报表模板被垂直的分层,每一个部分都是一个Band,每一个Band的特点不同:
    在这里插入图片描述
    Title(标题):只在整个报表的第一页的最上端显示。只在第一页显示,其他页面均不显示。
    Page Header(页头):在整个报表中每一页都会显示。在第一页中,出现的位置在 Title Band的下面。在除了第一页的其他页面中Page Header 的内容均在页面的最上端显示。
    Page Footer(页脚):在整个报表中每一页都会显示。显示在页面的最下端。一般用来显示页码。
    Detail 1(详细):报表内容,每一页都会显示。
    Column Header(列头):Detail中打印的是一张表的话,这Column Header就是表中列的列头。
    Column Footer(列脚):Detail中打印的是一张表的话,这Column Footer就是表中列的列脚。
    Summary(统计):表格的合计段,出现在整个报表的最后一页中,在Detail 1 Band后面。主要是用来做报表的合计显示。

编译模板

  右键单击模板文件 -> compile Report 对模板进行编译,生成.jasper文件
在这里插入图片描述

导入需要的依赖

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.5.0</version>
</dependency>
<dependency>
    <groupId>org.olap4j</groupId>
    <artifactId>olap4j</artifactId>
    <version>1.2.0</version>
</dependency>
<dependency>
    <groupId>com.lowagie</groupId>
    <artifactId>itext</artifactId>
    <version>2.1.7</version>
</dependency>

通过main方法测试

    public static void main(String[] args) throws Exception {
//        1、导出一个只有静态文本的pdf
//        指定模板的路径
        String filePath = "C:\\Users\\Desktop\\test01.jasper";
//        文件的输入流
        InputStream inputStream = new FileInputStream(filePath);
//        准备模板中需要的参数
        Map parameters = new HashMap<>();
        JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream,
 parameters, new JREmptyDataSource());
//        输出
        JasperExportManager.exportReportToPdfStream(jasperPrint,new
FileOutputStream("d:\\demo1.pdf"));
}

中文处理

  由于该工具对中文不支持,所以我们需要对中文进行处理。在设计阶段指定华文宋体样式。
在项目中添加配置文件
添加properties文件:

net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.lobstertwo=stsong/fonts.xml

指定中文配置文件fonts.xml

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
   <!--<fontFamily name="Lobster Two">-->
   <!--<normal>lobstertwo/LobsterTwo-Regular.otf</normal>-->
   <!--<bold>lobstertwo/LobsterTwo-Bold.otf</bold>-->
   <!--<italic>lobstertwo/LobsterTwo-Italic.otf</italic>-->
   <!--<boldItalic>lobstertwo/LobsterTwo-BoldItalic.otf</boldItalic>-->
   <!--<pdfEncoding>Identity-H</pdfEncoding>-->
   <!--<pdfEmbedded>true</pdfEmbedded>-->
   <!--<!–-->
   <!--<exportFonts>-->
   <!--<export key="net.sf.jasperreports.html">'Lobster Two', 'Times New Roman', Times, serif</export>-->
   <!--</exportFonts>-->
   <!--–>-->
   <!--</fontFamily>-->
   <fontFamily name="华文宋体">
       <normal>stsong/stsong.TTF</normal>
       <bold>stsong/stsong.TTF</bold>
       <italic>stsong/stsong.TTF</italic>
       <boldItalic>stsong/stsong.TTF</boldItalic>
       <pdfEncoding>Identity-H</pdfEncoding>
       <pdfEmbedded>true</pdfEmbedded>
       <exportFonts>
           <export key="net.sf.jasperreports.html">'华文宋体', Arial, Helvetica, sans-serif</export>
           <export key="net.sf.jasperreports.xhtml">'华文宋体', Arial, Helvetica, sans-serif</export>
       </exportFonts>
       <!--
       <locales>
           <locale>en_US</locale>
           <locale>de_DE</locale>
       </locales>
       -->
   </fontFamily>
</fontFamilies>

再引入stong.TTF字体库。
整个目录如下:
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Seed-Coder-8B-Base

Seed-Coder-8B-Base

文本生成
Seed-Coder

Seed-Coder是一个功能强大、透明、参数高效的 8B 级开源代码模型系列,包括基础变体、指导变体和推理变体,由字节团队开源

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JustDoSelf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值