Java Jaspersoft Studio使用2

本文详细介绍了如何在Java和Vue项目中,结合JasperReports进行单个和批量打印,包括配置字体、POM依赖、创建模板和编写前后端代码以实现PDF报表导出。
摘要由CSDN通过智能技术生成

上一篇文章写的是jaspersoft Studio的使用和创建模板,链接为:Java Jaspersoft Studio使用1-CSDN博客

这一篇文章是关于如何结合Java,vue前后端分离时怎么进行打印

效果如下:

1、单个打印:

2、批量打印:

一、先进行配置文件

pom:

<!--        jasper依赖-->
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>6.20.0</version>
            <exclusions>
                <exclusion>
                    <groupId>com.lowagie</groupId>
                    <artifactId>itext</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

1.1、创建文件

resources下面创建一个文件夹用于放字体文件模板文件

1.2、字体

可以通过以下路径进行查找自己需要的字体,最好找字体后缀为:.ttf.TTF

因为我再使用其它后缀时没成功

1.3、配置字体XML

注意:一个字体文件对应一个xml文件

当有了字体后进行创建一个XXX.xml文件

xml里面配置:

1.仿宋字体配置:

<!--注意:使用的是什么字体一定要改成什么字体文件-->
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<!--    name 是 什么字体 如果不清楚是什么字体的话可以点开一个.ttf文件,前两个字就是指的是什么字体-->
    <fontFamily name="仿宋">
<!--        放入仿宋ttf字体文件的路径-->
        <normal>jasperReport/fonts/simfang.ttf</normal>
        <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>
    </fontFamily>
</fontFamilies>

2.华文仿宋字体配置:

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
    <fontFamily name="华文仿宋">
        <normal>jasperReport/fonts/STFANGSO.TTF</normal>
        <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>
    </fontFamily>
</fontFamilies>

3.楷体字体配置:

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="楷体">
    <normal>jasperReport/fonts/simkai.ttf</normal>
    <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>
</fontFamily>
</fontFamilies>

可以参考以上字体进行配置其它ttf文件的字体

 1.4、模板配置

打开通过:Java Jaspersoft Studio使用1-CSDN博客

 以上链接的最后一部获取.jasper文件放入到一个文件里面

1.5、创建properties文件

用于配置字体的xml文件

jasperreports_extension.properties配置:

net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
#jasperReport/fonts/font_simfang.xml是自己配置哪个字体的文件存储位置
net.sf.jasperreports.extension.simple.font.families.lobstertwo=jasperReport/fonts/font_simfang.xml

二、编写代码

2.1、单个打印

controller层:

@GetMapping("/exportJasper/{locationNo}")
    public void exportJasper(@PathVariable("locationNo")String locationNo,HttpServletResponse response)
    {
        try {
            //读取编译下的路径文件test1.jasper
            ClassPathResource resource = new ClassPathResource("jasperReport/jasper/location.jasper");
            FileInputStream fis = new FileInputStream(resource.getFile());
            //2.创建JasperPrint,向jasper文件中填充数据
            ServletOutputStream stream = response.getOutputStream();
            Map params = new HashMap<>();
            //查询打印的数据
            List<PrintLocationDto> list = productStorageLocationService.listLocationJaper(locationNo);
            JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list);
            byte[] bytes = JasperRunManager.runReportToPdf(fis, params, dataSource);
            stream.write(bytes);
            response.setContentType("application/pdf");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("产生报表出错:" + e.getMessage());
        }
    }

serve层:

serve层:
@Override
public List<PrintLocationDto> listLocationJaper(String locationNo) {
    return alterStorageLocationMapper.listLocationJaper(locationNo);
}

前端:

xx.js:

// jasper
export function getLocationJasper(locationNo) {
  return request({
      url: '/XXX/XXXXXXX/exportJasper/' + locationNo,
      method: 'get',
      data: locationNo,
      responseType: 'arraybuffer'
  })
}

 页面:

xxx.vue:

<el-table-column
        label="操作"
        align="center"
        class-name="small-padding fixed-width"
      >
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-export"
            @click="handleJasper(scope.row)"
            >打印</el-button
          >
        </template>
      </el-table-column>


import {getLocationJasper} from "@/api/XXX/XXXXX";


handleJasper(row) {
      const locationNo = row.locationNo || this.locationNos;
      var that = this;
      getLocationJasper(locationNo).then((response) => {
        const binaryData = [];
        binaryData.push(response); //获取blob链接
        that.pdfUrl = window.URL.createObjectURL(
          new Blob(binaryData, { type: "application/pdf" })
        );
        console.log("pdfUrl:" + that.pdfUrl);
        that.$refs.pdfFrame.contentWindow.location.reload();

        console.log("查看iframe" + that.$refs.pdfFrame);
      });
    },

2.2、批量打印

这个批量打印和单个打印是不同的,但是这个批量打印也适用于单个打印,只不过单个打印上面那个需要SQL查询,但是这个批量的不需要SQL查询

controller层:

@PostMapping("/exportJasper")
    public void exportJasper(@RequestBody List<PrintInbound> list, HttpServletResponse response)
    {
        System.out.println("list = " + list);
        try {
            //读取编译下的路径文件
            ClassPathResource resource = new ClassPathResource("jasperReport/jasper/into.jasper");
            FileInputStream fis = new FileInputStream(resource.getFile());
            //2.创建JasperPrint,向jasper文件中填充数据
            ServletOutputStream stream = response.getOutputStream();
            Map params = new HashMap<>();
            JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list);
            byte[] bytes = JasperRunManager.runReportToPdf(fis, params, dataSource);
            stream.write(bytes);
            response.setContentType("application/pdf");
        } catch (Exception e) {
            e.printStackTrace();
//            System.out.println("产生报表出错:" + e.getMessage());
        }
    }

前端:

XX.js:

// 打印jasper
export function getExportJasper(list) {
  return request({
    url: '/XXX/XXX/exportJasper',
    method: 'post',
    data:list,
    responseType: 'arraybuffer'
  })
}

页面:

XXX.vue:

<el-col :span="1.5">
        <el-button
          type="warning"
          plain
          icon="el-icon-export"
          size="mini"
          :disabled="multiple"
          @click="handleJasperInto"
          >jasper导出</el-button
        >
      </el-col>


import { getExportJasper } from "@/api/XX/XXXXX";

data() {
    return {
      pdfUrl: "",
      //多选中jasper打印
      jasperList:[],
      // 非单个禁用
      single: true,
      // 非多个禁用
      multiple: true,
    }
}

handleJasperInto() {
      var that = this;
      getExportJasper(this.jasperList).then((response) => {
        console.log(response);
        const binaryData = [];
        binaryData.push(response); //获取blob链接
        that.pdfUrl = window.URL.createObjectURL(
          new Blob(binaryData, { type: "application/pdf" })
        );
        console.log("pdfUrl:" + that.pdfUrl);
        that.$refs.pdfFrame.contentWindow.location.reload();
        // console.log("查看iframe" + that.$refs.pdfFrame);
      });
    },

// 多选框选中数据
    handleSelectionChange(selection) {
      this.jasperList = selection
      this.ids = selection.map(item => item.id)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: TIBCO Jaspersoft Studio是一款用于创建和编辑JasperReports报表的强大工具。JasperReports是一个开源的Java报表生成库,可以用于生成各种格式的报表,如PDF、HTML、Excel等。 要下载TIBCO Jaspersoft Studio 6.5.1版本,您可以按照以下步骤进行操作: 1. 打开您的网络浏览器,然后在搜索引擎中搜索“TIBCO Jaspersoft Studio下载”。 2. 找到官方网站的链接,通常官方下载链接会在搜索结果的前几个出现。 3. 点击官方下载链接,这将带您到下载页面。 4. 在下载页面中,您可能需要提供一些信息,例如您的姓名、电子邮件地址等。填写这些信息,然后选择您的操作系统(如Windows、Mac或Linux)。 5. 确认您选择的是TIBCO Jaspersoft Studio 6.5.1的版本,然后点击下载按钮。 6. 下载会开始,等待下载完成。这可能需要一些时间,具体取决于您的互联网连接速度。 7. 下载完成后,找到下载文件并打开它。根据您的操作系统,可能需要进行安装过程,按照屏幕上的指示完成安装。 8. 安装完成后,您可以打开TIBCO Jaspersoft Studio,并开始使用它来创建和编辑报表。 总结:要下载TIBCO Jaspersoft Studio 6.5.1,请在官方网站上搜索并找到官方下载链接。填写必要的信息,选择合适的操作系统,并下载安装文件。安装完成后,您就可以开始使用TIBCO Jaspersoft Studio创建和编辑报表了。 ### 回答2: 要下载TIBCO Jaspersoft Studio 6.5.1,您可以按照以下步骤进行操作: 1. 打开您的网络浏览器并访问TIBCO官方网站。 2. 导航到TIBCO Jaspersoft Studio的页面。 3. 在页面中找到Jaspersoft Studio 6.5.1版本的下载链接。 4. 点击下载链接并等待下载完成。 5. 下载完成后,您可以找到下载的安装文件(可能是一个压缩包)。 6. 解压安装文件并运行安装程序。 7. 按照提示完成安装过程。 8. 安装完成后,您可以在计算机上找到TIBCO Jaspersoft Studio的快捷方式。 请注意,下载和安装软件时请始终确保您从官方来源获取,并确保您遵循所有相关法律和许可协议。如果您有任何问题或需要进一步的帮助,请访问TIBCO官方网站或咨询他们的支持团队。 ### 回答3: Tibco Jaspersoft Studio是一款功能强大的报表设计工具,可以帮助用户快速创建、编辑和生成专业的报表。要下载Tibco Jaspersoft Studio 6.5.1,可以按照以下步骤进行操作: 1. 打开Tibco官方网站(https://www.tibco.com/)。 2. 在网站顶部的搜索栏中输入"Tibco Jaspersoft Studio"并点击搜索按钮。 3. 在搜索结果中找到Tibco Jaspersoft Studio的官方页面,并点击进入。 4. 在官方页面中,找到下载选项,一般会有多个下载选项可供选择,根据你的操作系统选择合适的版本。 5. 点击下载按钮后,等待下载完成。 6. 下载完成后,双击安装文件并按照提示完成安装过程。 安装完成后,你就可以使用Tibco Jaspersoft Studio 6.5.1开始设计和生成报表了。这款软件提供了丰富的功能和灵活的报表设计工具,让你可以根据需要进行报表的布局、样式和数据源的配置。同时,Tibco Jaspersoft Studio还提供了多种报表输出格式的支持,包括PDF、Excel和HTML等,可以满足不同的报表输出需求。 总之,Tibco Jaspersoft Studio是一款方便实用的报表设计工具,透过简单的下载和安装过程,你可以轻松地开始使用这款软件,并利用其强大的功能和灵活的设计工具来创建出专业水准的报表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值