java-iText html转pdf的问题

最近在平台开发的时候,需要将一个word文档转成html嵌入vue和java项目中,需要设计-前后端配合开发,设计设计好版式,然后前端写静态html页面,然后交给后端嵌入项目。期间,碰到了几个问题,总结如下:

问题一:图片不显示

最快解决方法:①不支持svg图片;②用服务器图片。

table里加图片,td设置宽度控制图片大小,比如td的宽度设置为18%,图片设置100%宽度和一个最大宽度,这样就可以放大缩小都适配了。

问题二:列宽不起作用

最快解决方法:表格的第一行的列都要设置列宽(针对有列宽需求的表格来讲的,列数多可以自动撑),比如只有两列的表格显示不好看,那两列都要设置宽度控制。

最新版iText支持设置列宽。老版本iText用<table columns="2" widths="80;20" width="100%">

问题三:页面及表格样式不起作用

最快解决方法:

  1. 样式写到html里,不用外部css;

  1. 不支持td:first-child写法;

  1. body设置的字号不会被子元素继承,所以要为页面里的每个元素设置字体大小。12px大小的文字设置打印出来刚刚好,嵌入网页也适用,建议直接给各元素统一设成12px,后面确实像大标题这样的地方需要修改的再单独设置。

h1,
    h2,
    h3,
    h4,
    h5,
    h6,
    th,
    td,
    span,
    p {
        padding: 0;
        margin: 0;
        font-size: 12px;
        font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
    }
  1. td样式单独写,或者加class统一写均可。

<td style="width: 20%;">Bank Branch Code</td>
<td class="width">004</td>
  1. html设置的margin-top:10px,转成pdf后间距看起来有20px那么高,所以需要减半设置即可。

  • 如果有中文,可能还需要引入中文字体。我们这个页面是纯英文所以没碰到中文不显示的问题。

打印效果如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值