1. 程式人生 > >單個或者多個jasper檔案生成PDF檔案

單個或者多個jasper檔案生成PDF檔案





import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.util.JRLoader;








public class TestUtils {
 
public static void main(String[] args) throws JRException {
getFirst();
getPa();
}


private static void getFirst() throws JRException {
// 第一步:裝載jasper檔案
File jasperFileName = new File("c://test2.jasper");
// 第二步:設定引數值
/* 設定引數 */
HashMap<String, Object> params = new HashMap<String, Object>();// 建立引數表
params.put("name","我們的產品"); // 設定引數值
// 第三步:利用JasperRunManager生成PDF檔案
JasperRunManager.runReportToPdfFile(jasperFileName.getPath(),
params, new JREmptyDataSource());
}

private static void getPa() throws JRException{
JRPdfExporter jrpdf = new JRPdfExporter();
JasperReport report1 = (JasperReport) JRLoader.loadObject(new File("c://test.jasper"));
JasperReport report2 = (JasperReport) JRLoader.loadObject(new File("c://test2.jasper"));
List<String> list = new ArrayList<String>();
list.add("測試資料");
JRBeanCollectionDataSource ds1 = new JRBeanCollectionDataSource(list);
JRBeanCollectionDataSource ds2 = new JRBeanCollectionDataSource(list);
HashMap<String, Object> params = new HashMap<String, Object>();// 建立引數表
params.put("name", "我們的產品"); // 設定引數值

JasperPrint jasperPrint = JasperFillManager.fillReport(report1,params,ds1);
JasperPrint jasperPrint2 = JasperFillManager.fillReport(report2,params,ds2);
List jasperPrintList = new ArrayList();
jasperPrintList.add(jasperPrint);
jasperPrintList.add(jasperPrint2);

File file = new File("c://Test.pdf");

ByteArrayOutputStream baos = new ByteArrayOutputStream();
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
exporter.exportReport();
byte[] bytes = baos.toByteArray();
// 確定寫出檔案的位置
try {
// 建立輸出位元組流
FileOutputStream fos = new FileOutputStream(file);
// 用FileOutputStream 的write方法寫入位元組陣列
fos.write(bytes);
System.out.println("寫入成功");
// 為了節省IO流的開銷,需要關閉
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}



}

相關推薦

單個或者jasper檔案生成PDF檔案

import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import

圖片轉換成pdf檔案的方法

JPG和PDF都是我們平時接觸比較多的檔案格式,大多數的圖片都是以jpg格式的儲存的,但是也有部分以pdf格式儲存的,如果對比我們會發現以pdf格式儲存的圖片瀏覽更方便,也更適合大量檔案儲存,那麼

HTML5 單個或者Video標籤視訊載入第一幀方法(poster屬性)

最近在做這個前端視訊載入第一幀的功能,查了很多資料基本上有兩種思路: 一、canvas畫圖取base64格式編碼設定poster屬性的方法; 二、給定圖片設定在視訊上方,點選圖片隱藏起來,視訊追加播放事件。 我就在此提供方法一所需要的程式碼,也是自己用到的

Latex 通過生成dvi檔案 生成pdf檔案

網上很多LaTeX生成PDF的教程,一般都是選單欄選擇“pdfLaTeX”即可。 不過也不知道是我下載的ctex不完整還是怎樣,我用這個選項的時候,不是不能生成pdf,就是超級慢。 所以我個人還是比較推崇傳統的方法:先生成dvi,在生成pdf。 直接在winEdt

Linux將檔案生成.so檔案

本工程共有三個檔案:myhello.c、myhello.h、Makefile myhello.c程式碼如下: #include <stdio.h> #include <string.h> #include "myhello.h" voi

【Maven jar】打包單個檔案,有依賴jar包的將架包一起打包成一個jar包供別的專案引用

之前有一片文章,是打包單個java檔案的。這次想要將http://www.cnblogs.com/sxdcgaq8080/p/8398780.html  打包成jar包,發現這個java檔案中引用了多個第三方的jar,想要單獨進行編譯都無法通過,更不要說打包成jar了。 所以就營運而生了這個需求,怎麼打包單

Android生成PDF檔案、webview載入本地PDF或者網路PDF

生成pdf Andrid端生成PDF侷限性太差,尚未有優雅的解決方案。但網上眾說紛紜,實踐者少之又少,高質量的博文也是鳳毛麟角,大家都是博文搬用工,也沒有誰做過詳細的探索。筆者就自己的一點經驗做點分享。 使用iText iText不支援中文,要

web端excel的生成和打包成zip檔案

需求 伺服器生成資料,但是資料超過一定行需要分成多個excel,並且打包成zip供web端下載。 分析 已知: 可以生成excel檔案 無法生成zip檔案包 需要做的事情 實現多個檔案的打包

利用itext將html檔案轉化pdf檔案(5)——檔案的合併

工作中經常會遇到將多個html檔案轉化為pdf,並且將pdf轉化之後的檔案進行合併。官方參考文件下面來介紹簡單的操作:import java.io.ByteArrayInputStream; import java.io.FileInputStream; import jav

jspsmartupload元件實現單個檔案上傳(下)

///實現新增多個附件 <%@ page language="java" pageEncoding="GBK"%> <html> <head>  <title>struts upload by zhangc</titl

使用項目生成Xml文件來顯示幫助文檔

spa 的人 ber this blog -i 項目 對比 方便 終於到這了,我們首先將Product單獨作為一個項目 WebAPI2PostMan.WebModel 並引用他,查看文檔如下。 你會發現,你的註釋也就是屬性的描述沒有了。打開App_Data/XmlDocu

mysql5.5基礎 drop table... 刪除一個表或者

windows7 drop ted 數據庫管理系統 珍惜 nbsp 優秀 管理 數據庫管理 禮悟:   公恒學思合行悟,尊師重道存感恩。葉見尋根三返一,江河湖海同一體。 虛懷若谷良心主,願行無悔給最苦。讀書鍛煉養身心,誠勸且行且珍惜。   數

YII2 gii 配置個數據庫, 或者配置文件的時候 gii 出現數據表不存在, 實現選擇數據庫 Table '****' does not exist. 解決 就在gii 頁面 選擇數據庫選項

TP 實現 分享 inf 技術 bsp 多個 ble png 用著用著就暈了 就在gii 頁面 選擇數據庫選項 (配置多個數據庫後制動就該有選項) YII2 gii 配置多個數據庫, 或者多個配置文件的時候 gii 出現數據表不存在, 實現選擇數據庫 Table

Linux服務器上配置2Tomcat或者Tomcat

ext fill 安裝 csdn .bat 第一個 onf src bin 一、當在一個服務器上面安裝2個tomcat的時候,修改第二個tomcat的conf目錄下server.xml文件裏面的端口號(原8080改成8081,原8005改成8006)可以達到兩個tomcat

Java redis 刪除單個key的方法

@Autowired RedisTemplate<Object, Object> redisTemplate; /** * redis刪除單個和多個key */ @Test public void testRedis

MATLAB:如何在指定路徑下,讀取單個)資料夾中所有影象

0. 選擇資料夾路徑: [filename filepath]=uigetfile('*.*','請選擇檔案');%filename為檔名,filepath為檔案路徑 image =  imread(strcat(file_path,image_name));%讀取圖片檔案 1,

福利!NodeJs爬取網路教程並生成PDF檔案,以阮一峰JavaScript教程和ES6教程為例(附原始碼和PDF檔案

前言 你想一夜暴富嗎?你想一夜成名嗎?你想開蘭博基尼泡妞嗎?你想拿鈔票點菸嗎?你想成為世界主宰嗎?那麼,趕緊往下看吧,雖然它不能達成前面所說的任 何一個夢想,但是,你將獲得: 通過命令列將某網站的內容轉成PDF檔案 通過NodeJS爬蟲將某網路教程(例如阮一峰的JavaScript教程和ES6教

Android專案中出現名字相同的重複檔案

Android專案中出現多個名字相同的重複檔案,Android studio就不知道該引用哪個檔案,這是就會報錯! 我的錯誤例如以下: 其實這是同一個型別問題,產生的原因是有多於一個的相同名稱的檔案存在,系統不知道該引用哪一個檔案而報錯, 解決方式是: 在module

java 從字串中 以單個空格進行分隔 提取字串

    String str = "test test1 test2 test3"; String [] arr = str.split("\\s+"); for(String ss : arr){

linux 用 grep 查找單個字符串(關鍵字)

grep 關鍵字 inux rep tmp php lin log 成功 1.單個 cat /tmp/php.log | grep "成功" 所有的成功都會被查詢出來。 2.多個,並列查詢 cat /tmp/php.log | grep "推薦