国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Spring Boot集成JasperReports生成PDF文檔

Miracle / 572人閱讀

摘要:由于工作需要,要實(shí)現(xiàn)后端根據(jù)模板動(dòng)態(tài)填充數(shù)據(jù)生成文檔,通過技術(shù)選型,使用來設(shè)計(jì)模板,結(jié)合工具庫來調(diào)用渲染生成文檔。

由于工作需要,要實(shí)現(xiàn)后端根據(jù)模板動(dòng)態(tài)填充數(shù)據(jù)生成PDF文檔,通過技術(shù)選型,使用Ireport5.6來設(shè)計(jì)模板,結(jié)合JasperReports5.6工具庫來調(diào)用渲染生成PDF文檔。本人文采欠缺,寫作能力差,下面粗略的介紹其使用步驟,若有不對(duì)的地方,望大家莫噴,謝謝!

一、使用Ireport designer 5.6設(shè)計(jì)模板

ireport的使用由于時(shí)間關(guān)系不便多說,設(shè)計(jì)好之后,將其進(jìn)行編譯生成jasper文件,然后將其拷貝放置于項(xiàng)目某個(gè)目錄下,以供訪問獲取該文件。

二、在Spring Boot項(xiàng)目中引入依賴包


    net.sf.jasperreports
    jasperreports
    6.0.0


    net.sf.jasperreports
    jasperreports-fonts
    6.0.0


    com.itextpdf
    itextpdf
    5.5.0


    com.itextpdf
    itext-pdfa
    5.5.0


    com.itextpdf
    itext-asian
    5.2.0


    org.codehaus.groovy
    groovy-all
    2.4.11
三、自定義spring mvc通用導(dǎo)出PDF視圖類PdfReportView(繼承自AbstractView )
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import org.springframework.web.servlet.view.AbstractView;

public class PdfReportView extends AbstractView {

    private static final String CONTENT_TYPE = "application/pdf";

    private String templatePath;
    private String exportFileName;

    public PdfReportView(String templatePath, String exportFileName) {
        this.templatePath = templatePath;
        if (exportFileName != null) {
            try {
                exportFileName = URLEncoder.encode(exportFileName, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
        this.exportFileName = exportFileName;
        setContentType(CONTENT_TYPE);
    }

    protected Map getParamsMap(Map map) throws Exception {
        Map params = new HashMap<>();
        for (String key : map.keySet()) {
            Object val = map.get(key);
            if (val instanceof JRDataSource) {
                continue;
            } else {
                params.put(key, val);
            }
        }
        return params;
    }

    protected JRDataSource getDataSource(Map map) throws Exception {
        for (String key : map.keySet()) {
            Object val = map.get(key);
            if (val instanceof JRDataSource) {
                return (JRDataSource) map.get(key);
            }
        }
        return new JREmptyDataSource();
    }

    @Override
    protected void renderMergedOutputModel(Map map,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {

        response.setCharacterEncoding("utf-8");
        response.setContentType(getContentType());
        //response.setContentType("application/octet-stream");
        response.setHeader("content-disposition", "attachment;filename=" + exportFileName + ".pdf");

        try (InputStream inputStream = Thread.currentThread().getContextClassLoader()
            .getResourceAsStream(templatePath)) {
            try (OutputStream ouputStream = response.getOutputStream()) {

                JasperPrint jasperPrint = JasperFillManager
                    .fillReport(inputStream, getParamsMap(map), getDataSource(map));

                JasperExportManager.exportReportToPdfStream(jasperPrint, ouputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
四、spring mvc調(diào)用案例
Map map = new HashMap<>();
List> dataList = ....
map.put("users", new JRMapCollectionDataSource(dataList));
map.put("title", "報(bào)表名稱");
return new ModelAndView(new PdfReportView("templates/report/resume.jasper", "professors"),map);
五、解決linux下宋體渲染問題

1、在src/main/resources路徑下新建jasperreports_extension.properties文件,內(nèi)容如下:

net.sf.jasperreports.awt.ignore.missing.font=true
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.dejavu=fonts/fonts.xml

2、在src/main/resources路徑下新建fonts目錄,并新建fonts.xml文件,內(nèi)容如下:





    
        net/sf/jasperreports/fonts/dejavu/DejaVuSans.ttf
        net/sf/jasperreports/fonts/dejavu/DejaVuSans-Bold.ttf
        net/sf/jasperreports/fonts/dejavu/DejaVuSans-Oblique.ttf
        net/sf/jasperreports/fonts/dejavu/DejaVuSans-BoldOblique.ttf
        Identity-H
        true
        
            "DejaVu Sans", Arial, Helvetica, sans-serif
            "DejaVu Sans", Arial, Helvetica, sans-serif
        
        
    

    
        net/sf/jasperreports/fonts/dejavu/DejaVuSerif.ttf
        net/sf/jasperreports/fonts/dejavu/DejaVuSerif-Bold.ttf
        net/sf/jasperreports/fonts/dejavu/DejaVuSerif-Italic.ttf
        net/sf/jasperreports/fonts/dejavu/DejaVuSerif-BoldItalic.ttf
        Identity-H
        true
        
            "DejaVu Serif", "Times New Roman", Times, serif
            "DejaVu Serif", "Times New Roman", Times, serif
        
    

    
        net/sf/jasperreports/fonts/dejavu/DejaVuSansMono.ttf
        net/sf/jasperreports/fonts/dejavu/DejaVuSansMono-Bold.ttf
        net/sf/jasperreports/fonts/dejavu/DejaVuSansMono-Oblique.ttf
        net/sf/jasperreports/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf
        Identity-H
        true
        
            "DejaVu Sans Mono", "Courier New", Courier, monospace
            "DejaVu Sans Mono", "Courier New", Courier, monospace
        
    
    
        
            "DejaVu Sans", Arial, Helvetica, sans-serif
            "DejaVu Sans", Arial, Helvetica, sans-serif
        
    
    
        
            "DejaVu Serif", "Times New Roman", Times, serif
            "DejaVu Serif", "Times New Roman", Times, serif
        
    
    
        
            "DejaVu Sans Mono", "Courier New", Courier, monospace
            "DejaVu Sans Mono", "Courier New", Courier, monospace
        
    

    
        fonts/simsun.ttf
        fonts/simsun.ttf
        fonts/simsun.ttf
        fonts/simsun.ttf
        Identity-H
        true
        
            "宋體", Arial, Helvetica, sans-serif
            "宋體", Arial, Helvetica, sans-serif
        
    


3、在src/main/resources/fonts目錄放入宋體字體文件 simsun.ttf

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/70882.html

相關(guān)文章

  • 國外程序員整理的Java資源大全

    摘要:日期和時(shí)間處理日期和時(shí)間的函數(shù)庫。使用中可觀察序列,創(chuàng)建異步基于事件應(yīng)用程序的函數(shù)庫。為分布式系統(tǒng)提供延遲和容錯(cuò)處理。發(fā)布使用本機(jī)格式分發(fā)應(yīng)用程序的工具。將程序資源和打包成和的本機(jī)文件。圖像處理用來幫助創(chuàng)建評(píng)估或操作圖形的函數(shù)庫。 好資源要分享原文 譯者 唐尤華 翻譯自 github akullpp 構(gòu)建 這里搜集了用來構(gòu)建應(yīng)用程序的工具。 Apache Maven:Mave...

    chengtao1633 評(píng)論0 收藏0
  • Spring Boot集成Freemarker和iText生成PDF文檔

    摘要:格式文檔導(dǎo)出,是信息系統(tǒng)中非常實(shí)用的一種功能,用于各種報(bào)表和文檔的到處。示例中,使用生成要導(dǎo)出的格式文檔,通過來實(shí)現(xiàn)文件下載。將轉(zhuǎn)換成文檔生成的代碼比較簡(jiǎn)單,創(chuàng)建一個(gè)對(duì)象,然后會(huì)在指定的中輸入生成的文件。作用相當(dāng)于在中使用進(jìn)行配置。 showImg(https://segmentfault.com/img/remote/1460000008547574); PDF格式文檔導(dǎo)出,是信息系...

    liujs 評(píng)論0 收藏0
  • 使用spring boot + swagger自動(dòng)生成HTML、PDF接口文檔,并解決中文顯示為空白

    摘要:首先是從下載了,這個(gè)已經(jīng)能夠生成和文檔了,但是對(duì)中文支持不好,中文大部分會(huì)顯示為空白。關(guān)于這個(gè)對(duì)中文支持不好,查了很多資料,應(yīng)該是字體和主題的原因,所以參考了很多資料,結(jié)合當(dāng)前這個(gè),做出了最終的能很好支持中文的,最終地址。 做后端開發(fā),自然離不開接口文檔,接口文檔不僅方便后端開發(fā)人員之間查看,更是前端人員必要的文檔,也有可能提供給第三方來調(diào)用我們的接口。但是,寫接口文檔太費(fèi)時(shí)間,而且如...

    fjcgreat 評(píng)論0 收藏0
  • 常用的6款Java開源報(bào)表制作工具

    摘要:本文為大家推薦款常用的開源報(bào)表制作工具,供開發(fā)者學(xué)習(xí)參考。一個(gè)基于的開源報(bào)表工具,它可以在環(huán)境下像其他報(bào)表工具一樣來制作報(bào)表,支持和文件輸出格式,是當(dāng)前開發(fā)者最常用的報(bào)表工具。使用開發(fā)的,并使用作為報(bào)表生成引擎。 本文為大家推薦6款常用的Java開源報(bào)表制作工具,供開發(fā)者學(xué)習(xí)、參考。 1.Aspose.Cells for JasperReports一個(gè)基于Java的開源報(bào)表工具,它可以...

    QLQ 評(píng)論0 收藏0
  • Gradle環(huán)境下導(dǎo)出Swagger為PDF

    摘要:沒錯(cuò),不支持,從導(dǎo)出的文檔也可以看到,部分中文無法顯示,目前我也尚未找到是否有配置可以實(shí)現(xiàn)這個(gè)功能。相對(duì)前面的方式,使用起來更加簡(jiǎn)單,也可以修改配置輸出中文。 更多精彩博文,歡迎訪問我的個(gè)人博客 說明 我個(gè)人是一直使用Swagger作為接口文檔的說明的。但是由于在一些情況下,接口文檔說明需要以文件的形式交付出去,如果再重新寫一份文檔難免有些麻煩。于是在網(wǎng)上看到了Swagger2Mar...

    OnlyMyRailgun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<