【问题标题】:iText7: Parsing html with ul in td does not show list-style elementiText7:在 td 中使用 ul 解析 html 不显示列表样式元素
【发布时间】:2018-01-11 14:32:26
【问题描述】:

我们即将确定 iText7 是否符合我们的需求。

我们的工作流程如下:我们将 html 正文(几乎是表格;由 php 构建)和一些带有 REST 的 css 发送到 Java 原型应用程序。 html 通过 HtmlConverter 放到 PdfDocument 中。

生成的 pdf 的大部分输出看起来都很好,但我们在 ul 和 ol 的 li 元素前面看不到任何字形。我们已经尝试使用 css 强制它:

ol li { list-style-type: disc; }

但没有成功。我们还尝试了 ul、ol 和/或 li 中的其他定义(list-style: disc inside; list-style: disc outside; list-style: disc; or list-style-type: disc;)。

顺便说一句,css 解析得很好。我们已经改变了 ul/ol 的背景颜色。

我们还测试了几个字体文件,但无法显示字形。

有什么建议吗?

【问题讨论】:

  • 如果不定义列表样式怎么办?你得到一个连字符还是一个项目符号?如果是这样,则可能是与字体相关的问题。圆盘符号不是标准字体中的常见字形。也许 iText 7 和 pdfHTML 在手头的字体中没有找到任何圆盘符号。如果是这样,也许向FontProvider 添加额外的字体可以解决问题。如果省略列表样式,则看不到任何列表符号(甚至连连字符),则说明有其他问题在起作用。或者,如果您可以使光盘显示在<td> 之外的列表中,那么我的评论没有多大意义。
  • 一开始我们并没有在 ul's/ol's 上放置任何 css,结果相同。我们还尝试了 list-style-type: square/circle/etc。我只是尝试在 pdf 中放置一个没有表格的普通列表 - 它也呈现没有字形。
  • 同样没有 css:没有字形。我们使用 arialuni.ttf 作为字体。
  • 好的,那么问题与字形无关。一定有别的东西在起作用。我正在做其他事情,但如果明天还没有收到的话。我将举一个例子来重现问题,并在 iText Software 创建一个内部票证。
  • 好吧,我发现了一些东西:为了获得字形,我必须做三件事:1) 删除字体 arialuni,2) 将 "<style>" + css + "</style>" + body 更改为 "<html><head>" + css + "</head><body>" + body + "</body></html>" 和 3) 删除填充: 0;在 CSS 中。现在我在一个嵌套列表中有两个字形,但我猜这是一个 css 东西。

标签: java itext7 html2pdf


【解决方案1】:

我们以错误的方式创建了字体:

this.font = PdfFontFactory.createFont(this.FONT, PdfEncodings.UTF8);
this.fontProvider = new FontProvider();
this.fontProvider.addFont(font.getFontProgram(), PdfEncodings.UTF8);

这是正确的:

this.font = PdfFontFactory.createFont(this.FONT, PdfEncodings.UTF8);
this.fontProvider = new FontProvider();
this.fontProvider.addFont(font.getFontProgram());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2020-06-13
    • 2010-12-15
    • 2012-08-03
    相关资源
    最近更新 更多