Java下载PDF(jasperreports开发)

    xiaoxiao2022-07-05  178

    准备配置文件 (解决乱码问题,字体问题)

    stsong.TTF 为字体文件 jasperreports_extension.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>

    引入PDF模板文件

    导入坐标依赖

    <!--jasperreports 坐标--> <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>

    java 代码来了 Controller中

    @Controller @RequestMapping("/cargo/export") public class PdfController extends BaseController { @Reference private ExportService exportService; @Reference private ExportProductService exportProductService; //报运单进行下载 @RequestMapping("/exportPdf") public void exportPdf(String id) throws Exception { //根据传入的报运单id 查找到对应的报运单信息 //这里如果直接查询返回map 也是可以的 Export export = exportService.findById(id); //根据报运单id 查找此单中所有的货物 ExportProductExample exportProductExample = new ExportProductExample(); exportProductExample.createCriteria().andExportIdEqualTo(id); List<ExportProduct> all = exportProductService.findAll(exportProductExample); //为了进行PDF传入下载 报运单应为Map集合 Map exportMap = BeanMapUtils.beanToMap(export); //为了进行PDF传入下载 报运全部货物应为list 或 co集合 //核心代码 //1创建pdf的输出对象 参数关系 1 字节输入流 2 map 3dpf的datasource //1 用于读取 jasper文件的 2 传递键值对的数据 3 传递list connection 集合数据 String contextPath = session.getServletContext().getRealPath("/jasper/export.jasper"); InputStream inputStream = new FileInputStream(contextPath); //创建JrdataSource JRDataSource jrDataSource = new JRBeanCollectionDataSource(all) ; JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream,exportMap,jrDataSource); //输入pdf jasperPrint , 输出流 JasperExportManager.exportReportToPdfStream(jasperPrint,response.getOutputStream()); //关流 inputStream.close(); }

    TIBCO Jaspersoft Studio-6.5.0.final的使用

    使用此工具 进行 jasperreports 项目开发 生成PDF模板

    画图太费劲 来张别人的吧 哈哈哈哈

    最新回复(0)