用java实现html转pdf

本文介绍如何利用Java库Flying Saucer将HTML文件转换成PDF,并提供了两种示例:一种是直接转换,不支持中文;另一种通过设置字体支持中文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;

import com.lowagie.text.pdf.BaseFont;

public class TestFlyingSauser
{

    public static void main( String[] args ) throws Exception
    {
//        demo_1();
        demo_2();
    }

    // 不支持中文
    public static void demo_1() throws Exception
    {
        String inputFile = "D:/Test/flying.html";
        String url = new File( inputFile ).toURI().toURL().toString();
        String outputFile = "D:/Test/flying.pdf";
        OutputStream os = new FileOutputStream( outputFile );
        ITextRenderer renderer = new ITextRenderer();
        renderer.setDocument( url );
        renderer.layout();
        renderer.createPDF( os );
        os.close();
    }

    // 支持中文
    public static void demo_2() throws Exception { 
        String outputFile = "G:/demo_3.pdf"; 
        OutputStream os = new FileOutputStream(outputFile); 
        ITextRenderer renderer = new ITextRenderer(); 
        ITextFontResolver fontResolver = renderer.getFontResolver(); 
        fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 
        StringBuffer html = new StringBuffer(); 
        // DOCTYPE 必需写否则类似于 这样的字符解析会出现错误 
        html.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"); 
        html.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">").
             append("<head>") 
            .append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />")
            .append("<style type=\"text/css\" mce_bogus=\"1\">body {font-family: SimSun;}</style>")
            .append("</head>") 
            .append("<body>"); 
        html.append("<div>支持中文!</div>"); 
        html.append("</body></html>"); 
        renderer.setDocumentFromString(html.toString()); 
        // 解决图片的相对路径问题 
        // renderer.getSharedContext().setBaseURL("file:/F:/teste/html/"); 
        renderer.layout(); 
        renderer.createPDF(os); 
        os.close(); 
    }}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值