Java awt pdf_java生成pdf

简述

生成pdf思路主要是分两种情况,情况一:如果模板里面不需要数组参数,那么可以根据html模板直接生成pdf;情况二:如果模板里面需要数组参数,需要先利用freemarker生成html模板,再根据html生成pdf。

网上文章很多,但是都是用File文件类来做演示和工具包,可用性不够广,并且伴有磁盘文件的创建与删除,影响效率,下面是用I/O流写的工具类

1. 导入所需要的maven依赖

org.xhtmlrenderer

core-renderer

R8

org.freemarker

freemarker

2.3.28

2、准备好一份html或freemarker模板文件

在html或freemarker转pdf时,会出现中文乱码或者中文不显示的问题,故我们需要在html或freemarker中引入外部的中文字体库,这里使用的是simsun.ttc,需要在html或freemark加入相应代码,如下所示:simsun.ttc下载地址

在html或freemark中加入:

/*解决html转pdf文件中文不显示的问题*/

body {

font-family: SimSun;

}

/*设定纸张大小*/

/* A4纸 */

/* @page{size:210mm*297mm} */

@page{size:a4}

3.PdfUtil工具类

package com.futurehotel.cik.biz.util;

import com.lowagie.text.DocumentException;

import com.lowagie.text.pdf.BaseFont;

import freemarker.cache.ByteArrayTemplateLoader;

import freemarker.template.Configuration;

import freemarker.template.Template;

import freemarker.template.TemplateException;

import lombok.Cleanup;

import lombok.Data;

import lombok.extern.slf4j.Slf4j;

import org.w3c.dom.Document;

import org.xhtmlrenderer.pdf.ITextFontResolver;

import org.xhtmlrenderer.pdf.ITextRenderer;

import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import java.io.*;

import java.nio.charset.StandardCharsets;

import java.util.*;

@Slf4j

public class PdfUtil {

public static void main(String[] args) throws Exception {

// @Cleanup InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("pdfTemplat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值