栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java导出富文本为pdf

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java导出富文本为pdf

pom依赖
     
            com.itextpdf.tool
            xmlworker
            5.5.8
        
        
            com.itextpdf
            itext-asian
            5.2.0
        
CustomXMLWorkerFontProvider.java解决中文不显示问题
package test;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Font;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.tool.xml.XMLWorkerFontProvider;
import lombok.extern.slf4j.Slf4j;


@Slf4j
public class CustomXMLWorkerFontProvider extends XMLWorkerFontProvider {

    @Override
    public Font getFont(final String fontName, final String encoding, final boolean embedded, final float size, final int style,
                        final BaseColor color) {
        BaseFont bf = null;
        try {
            bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);
            Font font = new Font(bf, size, style, color);
            font.setColor(color);
            // log.info("PDF文档字体初始化完成!");
            return font;
        } catch (Exception e) {
            log.error("exception:", e);
        }
        return null;
    }
}
PdfUtil.java
package test;

import com.alibaba.fastjson.JSONObject;
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerHelper;

import java.io.*;
import java.nio.charset.Charset;

public class PdfUtil {

    
    public static void createdPdfByItextHtml(String htmlContent,File file){
        InputStream inputStream = null;
        FileOutputStream outputStream = null;
        PdfWriter writer = null;
        try {
            // 1. 获取生成pdf的html内容
            inputStream= new ByteArrayInputStream(htmlContent.getBytes("utf-8"));
            outputStream = new FileOutputStream(file);
            Document document = new Document();
            writer = PdfWriter.getInstance(document, outputStream);
            document.open();
            // 2. 添加字体
//            XMLWorkerFontProvider fontImp = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
//            fontImp.register(getFontPath());
            // 3. 设置编码
            XMLWorkerHelper.getInstance().parseXHtml(writer, document, inputStream, Charset.forName("UTF-8"),new CustomXMLWorkerFontProvider());
            // 4. 关闭,(不关闭则会生成无效pdf)
            document.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }finally {
            try {
                if(writer!=null){
                    writer.close();
                }
                if (outputStream != null) {
                    outputStream.close();
                }
                if (inputStream != null) {
                    inputStream.close();
                }
            }catch(IOException ex){
                ex.printStackTrace();
            }
        }
    }





    public static void main(String[] args) {
        String a = "{"html":"

saasafdfdsadasd

\n

sdfsdfsdf

\n

打开解放军官兵的时间赶不上的肌肤比较失败的不过深度不够撒旦解放大师傅士大夫士大夫士大夫士大夫士大夫看见电脑打开发给你的口水歌看你可怜的那个锻炼方法的联合国的法律后果费德勒换个地方;陆海空地方管理框架和 规范化风格风格化风格化分隔花粉管花粉管和法规和风格化法国和法国恢复回复给梵蒂冈豆腐干反对恢复共和国建国和话剧规划局肉汤羊肉汤预亏里哦蕾哈娜贴吧软弱和任天堂如果退货有高速带宽不够数量的可能过来的咖啡馆上的困境老师的可能各类考试的 8ac4290caa5f0a88930d80d2f4b608f5.jpeg (8.35 K)

\n

\n

sdfsdf

\n

yrdfsdf

\n

dsfsdfsdfsfsdfsdfsdfsxxxdfvbvscaskdbsjhcbsddjfcbsdjdbfcsjdbfcshdbfcjskzhbvdfafvajkshbdfvjhoasdbvjsadbvkjdsbvkjdfhbfvkjdbhfvkjdhbfvkjdzbhfvjjdhbvvdf你好山东福建河南山东快解封你是困难的时刻发你的空间概念的设计风格百度是打开空间概念是的看法呢广东省快解封那个时代开发功能速度快给你是打开开关你手动开关你是大哥

\n

dsfsfsd8ac4290caa5f0a88930d80d2f4b608f5.jpeg (8.35 K)

","imgUrl":"http://172.16.80.138:8917"}"; String b = "" + JSONObject.parseObject(a).get("html").toString() + ""; createdPdfByItextHtml(b,new File("D:/test.pdf")); } }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996300.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号