当前位置: 首页 > 知识库问答 >
问题:

飞碟-不呈现html实体

厉坚
2023-03-14

我正在使用飞碟库生成pdf。但是我对一些html实体有问题。

我已经在搜索解决方案了,我在这个论坛和其他地方找到了很多提示,但仍然存在问题。

我尝试过这种方法:

http://sdtidbits.blogspot.com/2008/11/flying-saucer-xhtml-rendering-and-local.html

但没有任何成功

我的代码如下所示:

os = new FileOutputStream(pdf);

ITextRenderer renderer = new ITextRenderer();
ChainingReplacedElementFactory chainingReplacedElementFactory = new ChainingReplacedElementFactory();
chainingReplacedElementFactory.addReplacedElementFactory(new B64ImgReplacedElementFactory(renderer.getSharedContext()));

renderer.getSharedContext().setReplacedElementFactory(chainingReplacedElementFactory);
renderer.setDocument(url); 
renderer.layout();
renderer.createPDF(os);

其中pdf是要创建的新pdf的名称,url是

        File f = new File(url);
        if (f.exists()) {
            url = f.toURI().toURL().toString();
        }

我的html文件看起来像这样

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org" />
<style type="text/css">
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr, th
{
    color: #444;
    font-family: Arial;
    font-size: 14px;
    line-height: 25px;
    border: none;
}

table, td {border: solid 1px #CCC;}

img {page-break-inside: avoid;}
</style>

<title></title>
</head>
<body>
<h1>Test</h1>

<p>Html etites to test</p>
<p>&#8592;</p>

<p>&larr;</p>

<p>&uarr;</p>
<p>&#8593;</p>
<p>&#8595;</p>
<p></p>

</body>
</html>

除了那些实体之外,一切都很好。没有什么被箭头渲染成只有空白点。有人有解决方案吗?

共有1个答案

仉嘉泽
2023-03-14

问题是iText默认使用的字体不支持要打印的字符。

解决方案是嵌入另一种可以显示此字符的字体,例如DejaVu。

java文件中,向渲染器声明字体:

ITextRenderer renderer = new ITextRenderer();
renderer.getFontResolver().addFont("font/DEJAVUSANS.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

renderer.setDocument(url); 
renderer.layout();
renderer.createPDF(os);

并更改HTML中的字体系列声明:

body
{
font-family: DejaVu Sans;
}
 类似资料:
  • 我试图通过使用飞碟(9.0.7)库从XHTML生成一个PDF文件。文本和表格按预期呈现,但图像(png)不会显示在最终的PDF中。图像由绝对文件路径引用(例如< code > 我的java代码如下: 任何帮助都将不胜感激。

  • 我有一个xhtml文档,我正在用flyingsaucer把它转换成PDF。xhtml有几个标签内嵌了base64编码的图像。xhtml的源代码是动态的,所以图像标签的结构可以变化。这是标签外观的一个示例: 当我在浏览器中查看html时,图像正确显示,但是,img元素不会在最终的PDF中呈现。以下是我如何将其渲染以创建PDF。 谁能告诉我应该采取什么方法来实现这个目标?我看到了这个帖子,但是,我使用

  • 我正在使用飞碟/iText生成报告。现在,报告有一个条件,即如果发生特定情况,报告应移动到pdf的下一页,并在pdf上添加数据,等等<问候Pawan

  • 我有一个Spring应用程序,需要建立对PDF生成的支持。我正在考虑使用飞碟和Thymeleaf来渲染PDF。然而,我找不到那么多关于将飞碟与Thymeleaf结合使用的信息。还有其他人一起使用这些技术吗?

  • 这是一个例外。。 Java语言lang.ClassCastException:org。XHTMLender。提供BlockBox无法转换为组织。XHTMLender。牛顿表。桌子盒

  • 我使用的罐子来自maven repo 我正在测试的代码来自以前的堆栈解决方案 我担心它可能过时了,因为图书馆被贬值了。测试以下代码时: 这一行我有以下错误: