欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识

鲁家宁); String content = J 劳务派遣管理系统 avaToPdfHtmlFreeMarker.fre

点击: 次  来源:宝鼎软件 时间:2017-11-08

原文出处: 蛙牛

1.配景

在某些业务场景中,需要提供相关的电子凭证,好比网银/付出宝中转账的电子回单,昆山软件开发,签约的电子条约等。利便用户查察,下载,打印。今朝常用的办理方案是,把相关数据信息,生成对应的pdf文件返回给用户。

鲁家宁); String content = J 劳务调派打点系统 avaToPdfHtmlFreeMarker.freeMarkerRender(data

本文源码:http://git.oschina.net/lujianing/java_pdf_demo

2.iText

iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不只可以生成PDF或rtf的文档,并且可以将XML、Html文件转化为PDF文件。

iText 官网:http://itextpdf.com/

iText 开拓文档: http://developers.itextpdf.com/developers-home

iText今朝有两套版本iText5和iText7。iText5应该是网上用的较量多的一个版本。iText5因为是许多开拓者参加孝敬代码,因此在一些类型和设计上存在不公道的处所。iText7是厥后官目的对iText5的重构,两个版本不同照旧挺大的。不外在实际利用中,一般用到的都较量简朴,所以不消出格拘泥于利用哪个版本。好比我们在http://mvnrepository.com/中搜索iText,出来的都是iText5的依赖。

来个最简朴的例子:

添加依赖:

<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.11</version>
</dependency>

测试代码:JavaToPdf

package com.lujianing.test;
 
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
 
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
 
/**
 * Created by lujianing on 2017/5/7.
 */
public class JavaToPdf {
 
    private static final String DEST = "target/HelloWorld.pdf";
 
 
    public static void main(String[] args) throws FileNotFoundException, DocumentException {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(DEST));
        document.open();
        document.add(new Paragraph("hello world"));
        document.close();
        writer.close();
    }
}

运行功效:

鲁家宁); String content = J 劳务调派打点系统 avaToPdfHtmlFreeMarker.freeMarkerRender(data

3.iText-中文支持

iText默认是不支持中文的,因此需要添加对应的中文字体,好比黑体simhei.ttf

可参考文档:http://developers.itextpdf.com/examples/font-examples/using-fonts#1227-tengwarquenya1.java

测试代码:JavaToPdfCN

package com.lujianing.test;
 
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;
 
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
 
/**
 * Created by lujianing on 2017/5/7.
 */
public class JavaToPdfCN {
 
    private static final String DEST = "target/HelloWorld_CN.pdf";
    private static final String FONT = "simhei.ttf";
 
 
    public static void main(String[] args) throws FileNotFoundException, DocumentException {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(DEST));
        document.open();
        Font f1 = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
        document.add(new Paragraph("hello world,我是鲁家宁", f1));
        document.close();
        writer.close();
    }
}

输出功效:

鲁家宁); String content = J 劳务调派打点系统 avaToPdfHtmlFreeMarker.freeMarkerRender(data

4.iText-Html渲染

在一些较量巨大的pdf机关中,我们可以通过html去生成pdf

可参考文档:http://developers.itextpdf.com/examples/xml-worker-itext5/xml-worker-examples

添加依赖:

<!-- https://mvnrepository.com/artifact/com.itextpdf.tool/xmlworker -->
<dependency>
    <groupId>com.itextpdf.tool</groupId>
    <artifactId>xmlworker</artifactId>
    <version>5.5.11</version>
</dependency>

添加模板:template.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
    <style>
        body{
            font-family:SimHei;
        }
        .red{
            color: red;
        }
    </style>
</head>
<body>
<div class="red">
    你好,鲁家宁
</div>
</body>
</html>