0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

将html文件转换成pdf示例

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-10-09 16:03 次阅读

Java 转换 HTML 到PDF有许多类库,今天我们介绍一下第三方免费的类库OpenPDF。

1. OpenPDF

OpenPDF是免费的Java类库 ,遵从LGPL 和 MPL协议,所以基本上能够可以随意使用。OpenPDF是基于iTEXT的,目前来说也是维护的比较好的Java操作PDF的开源软件。

话不多说,且看所需要的依赖,

< dependency >    
    < groupId >org.jsoup< /groupId >    
    < artifactId >jsoup< /artifactId >   
    < version >1.13.1< /version > 
< /dependency >
< dependency >
    < groupId >com.openhtmltopdf< /groupId >
    < artifactId >openhtmltopdf-core< /artifactId >
    < version >1.0.6< /version >
< /dependency >
< dependency >
    < groupId >com.openhtmltopdf< /groupId >
    < artifactId >openhtmltopdf-pdfbox< /artifactId >
    < version >1.0.6< /version >
< /dependency >

jsoup可以将html文件转换成输入流等,也可以遍历html的DOM节点,提取元素及样式等。

2. 示例

本篇示例将以下html文件转换成pdf

< html >
< head >
    < style >
        .center_div {
            border: 1px solid #404e94;
            margin-left: auto;
            margin-right: auto;
            background-color: #f6d0ed;
            text-align: left;
            padding: 8px;
        }
        table {
            width: 100%;
            border: 1px solid black;
        }
        th, td {
            border: 1px solid black;
        }
        body,html,input{font-family:"msyh";}
    < /style >
< /head >
< body >
< div class="center_div" >
    < h1 >Hello java North!< /h1 >
    < div >
        < p >convert html to pdf.< /p >
    < /div >
    < div >
        < table >
            < thead >
                < th >ROLE< /th >
                < th >NAME< /th >
                < th >TITLE< /th >
            < /thead >
            < tbody >
                < tr >
                    < td >MARKSMAN< /td >
                    < td >ASHE< /td >
                    < td >THE FROST ARCHER< /td >
                < /tr >
                < tr >
                    < td >MAGES< /td >
                    < td >ANNIE< /td >
                    < td >THE DARK CHILD< /td >
                < /tr >
                < tr >
                    < td >射手< /td >
                    < td >凯塔琳< /td >
                    < td >皮城女警< /td >
                < /tr >
            < /tbody >
        < /table >
    < /div >
< /div >
< /body >
< /html >

以上html用浏览器打开如下,乱码是因为中文字体不识别,下面转换的时候会加载对应的字体来进行转换。

图片

使用Java转换HTML到PDF代码如下:

public class HtmlToPDFOpenSource {
    public static void main(String[] args) throws IOException {
        HtmlToPDFOpenSource htmlToPDFOpenSource = new HtmlToPDFOpenSource();
        htmlToPDFOpenSource.generatePdfByOpenhtmltopdf();
    }

    private  void generatePdfByOpenhtmltopdf() throws IOException {
        File inputHtml = new File("E:javaNorthjava-study-notejavaOpenSourcesrcmainresourcestest.html");

        //加载html文件
        Document document = Jsoup.parse(inputHtml, "UTF-8");
        document.outputSettings().syntax(Document.OutputSettings.Syntax.html);
        
        //引入资源目录,可以单独引入css,图片文件等
        String baseUri = FileSystems.getDefault()
            .getPath("javaOpenSourcesrcmainresources")
            .toUri().toString();
       
        try (OutputStream os = new FileOutputStream("javaOpenSourcesrcmainresourcestestOpenLeagueoflegends1.pdf")) {
            PdfRendererBuilder builder = new PdfRendererBuilder();
            builder.withUri("javaOpenSourcesrcmainresourcestestOpenLeagueoflegends1.pdf");
            builder.toStream(os);
            builder.withW3cDocument(new W3CDom().fromJsoup(document), baseUri);
            
            //引入指定字体,注意字体名需要和css样式中指定的字体名相同
            builder.useFont(new File("javaOpenSourcesrcmainresourcesfontsmsyh.ttf"),"msyh",1,BaseRendererBuilder.FontStyle.NORMAL, true);
            builder.run();
        }
    }
}

使用Java代码转换成PDF如下(示例中使用了微软雅黑中文字体):

图片

上述html文件中增加如下 外部样式

< link href="style.css" rel="stylesheet" >

并在resources目录下添加style.css文件,重新生成PDF文件如下。

图片

3. 总结

本片介绍了使用OpenPDF将html文件转换成PDF文件。同时也使用了自定义字体,外部样式。但是以下几点需要格外注意。

  • Java代码中加载的字体名称要和HTML引用的CSS样式中的字体名相同 ({font-family:"msyh";})。
  • HTML文件标签节点必须闭合().否则解析会失败。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源软件
    +关注

    关注

    0

    文章

    209

    浏览量

    15876
  • JAVA
    +关注

    关注

    19

    文章

    2953

    浏览量

    104498
  • HTML
    +关注

    关注

    0

    文章

    277

    浏览量

    34236
  • PDF
    PDF
    +关注

    关注

    1

    文章

    166

    浏览量

    33644
收藏 人收藏

    评论

    相关推荐

    pdf转换成jpg软件如何使用

      大家在工作中对不同的文件格式,都有是相当了解的。因为工作需要都是会进行编辑的。但为了提高工作效率,需要将文件与其它格式之间进行相互转换,那么pdf
    发表于 10-26 10:56

    怎么把图片jpg转换成pdf文件

    ,安装和启动的过程极为迅速。迅捷JPG转为PDF转换器,独立的PDF文件解析核心技术,使得软件本身可以更好地对文件内容进行深度识别,并最终
    发表于 10-26 15:49

    pdf转换成jpg格式的快速转换方法

    pdf转换成jpg。  这里向大家推荐一个非常简单而又实用的方法,那就是使用迅捷PDF在线转换器这个软件就可以搞定了。这款软件可以完美的
    发表于 10-28 11:27

    怎么pdf转换成ppt格式的文件

      目前我们处理的文件大部分是的PDF格式的,遇到这类文档,大家已经能熟练的掌握转换的技巧了,不过那些刚进公司的小白就不行了。那么今天就还是给大家介绍下怎么
    发表于 11-02 10:24

    简单易掌握的pdf转换成word格式的方法

    支持多种格式转换的软件,可将Word/Excel/PPT、JPG等格式的文件快速转换成PDF,也支持PDF转Office、图片、TXT、
    发表于 11-03 11:04

    如何文件pdf转换成excel格式的表格

    来看看吧,说到文件转换只要一款专业的转换器就可以了。  PDF转换成Excel的软件很多,个人
    发表于 11-08 16:18

    最详细的方法教你如何pdf转换成word格式

    本帖最后由 1714472470 于 2016-11-18 11:51 编辑   在说过了那么多文件格式的转换方法后,发现大家最常用到的还是pdf转换成word格式,但是很多朋友
    发表于 11-18 11:03

    pdf转换成可编辑的ppt转换

    为了完成教学的目的,有时需要把拷贝出来的PDF文件转换成可以编辑的PPT格式幻灯片,然后在PPT文档中进行修改编辑内容便可。今天就为大家介绍一款专业的PDF
    发表于 03-17 15:11

    怎么ppt转换成word文件

    ,因此能够更好地针对不同文件内容的PDF文件进行全面更新。即便针对超大容量以及复杂的内容的PDF文件,迅捷软件本身也可以轻松实现极速
    发表于 03-20 14:37

    迅捷CAD编辑器如何CAD转换成PDF

    ,和光栅文件的导入,支持创建对dwg和dxf文件的关联。完美的支持CAD图形中文字体的显示。用最简单的操作CAD转换成PDF。  一、软件
    发表于 03-28 14:04

    请问如何使用CAD手机看图软件DWG格式图纸文件转换成PDF格式?

    在使用CAD手机看图软件修改好CAD图纸后想要发送给其他人,怎么手机中DWG格式图纸文件转换成PDF格式呢?接下来就给大家介绍一下CAD手机看图软件浩辰CAD看图王手机版中将DWG格
    发表于 06-24 13:46

    如何pads2007转换成cadence文件

    pads2007转cadence:如何pads2007转换成cadence文件
    发表于 09-14 09:55 0次下载
    如何<b class='flag-5'>将</b>pads2007<b class='flag-5'>转换成</b>cadence<b class='flag-5'>文件</b>

    pdf转换成word转换器下载

    此压缩文件里面包含二款转换工具:pdf转换成word转换器与word转换成
    发表于 09-18 09:17 110次下载
    <b class='flag-5'>pdf</b><b class='flag-5'>转换成</b>word<b class='flag-5'>转换</b>器下载

    如何PDF转换成CAD的DWG文件或DXF文件

    PDF格式的图纸进行二次编辑,那么需要将PDF转换成DWG/DXF格式的。下面我给大家介绍几款此类软件。 注意:但是在转换前先确认你的
    发表于 10-24 16:21 5442次阅读

    Word如何转换成PDF文件?Word与CAD互转图文教程免费下载

    经常做设计的相关的伙伴们可能都知道Word怎样转换成PDF文件,毕竟在很多的办公软件都是可以相通的,我们在设计中,不光单单是为了设计,有时候,为了需要,也会将world转换成
    发表于 09-28 08:00 0次下载
    Word如何<b class='flag-5'>转换成</b><b class='flag-5'>PDF</b><b class='flag-5'>文件</b>?Word与CAD互转图文教程免费下载