当前位置: 首页 > 工具软件 > HTML2PDF > 使用案例 >

html2pdf使用总结

子车飞鹏
2023-12-01

起源:

项目中用到使用html转pdf功能,将开发过程中,几个主要功能提炼出来,分享给大家并有github例子,clone下来配置好jdk就能直接跑例子,代码和逻辑也超简单,一看就能明白。

环境配置:

jdk1.8.0_77        idea        win10

htmlpdf版本如下

<dependencies>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>html2pdf</artifactId>
            <version>2.0.2</version>
        </dependency>
    </dependencies>

项目地址:https://github.com/patrickWuP/html2pdf

项目解析:

项目主要分三块:

一:快速将html转换为pdf,在 com.wp.html2pdf.simple.QuickHtml2Pdf 文件下,有三种方式将html转换为pdf(html2pdf工具类本身提供不止三种);

二:将中文html文件转换为pdf并支持粗细字体;SimSun-01.ttf(细字体)Dengb.ttf(粗字体);

三:在中文html基础上,实现相对路径和绝对路径添加图片转换为pdf方式,通过调整样式实现图片覆盖文章,类似公章的效果(前提图片背景得是透明的);

遇到的坑:

1.ttf字体从哪里来,刚开始从网上搜罗来的ttf字体,可信度和版本无法得知,本例子中的ttf字体都来自win10系统,默认路径:

C:\Windows\Fonts ,注意,你找不到我项目中的字体,因为我是将系统中ttc文件解压为多个ttf文件,任意挑取的,ttc转换为ttf在线转换地址为 https://transfonter.org/ttc-unpack

2.maven编译后ttf文件发生改变,导致中文转换失败,出错原因如下:

<resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <!-- 该配置导致ttf文件发生改变,正确配置如下:1.可以将上面的filter修改为false;2.新添加对ttf文件的配置 -->
                    <include>**/*.ttf</include>
                    <include>**/*.html</include>
                </includes>
            </resource>

当时这个问题排查了好一会儿,如何判断文件是否改变,编译后的target下的ttf文件和源ttf文件的大小比对下,不一样大肯定发生了改变。

3.图片绝对路径,使用https开头的连接无法正常转换。

4.img最后为第一级(没有被其他元素,比如div、span包裹)元素,保证转换为pdf时,将其作为img元素转换,而不是其他元素。

5.html转换为pdf的元素中,最好不要出现width,会导致生成的pdf页面尺寸发生改变。

 

以上,就是全部内容,剩下的所有精华都在代码里面了,等待大家去探索,有什么问题可以留言,大家共同进步!

 类似资料: