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

如果输入xhtml包含特殊字符,则使用飞碟生成pdf失败

仲浩旷
2023-03-14

我正在使用飞碟将xhtml转换为pdf。如果xhtml文件包含特殊字符,pdf生成失败。特殊字符是指ASCII字符集之外的字符。下面写的是生成pdf失败的示例xhtml(input.xhtml-ANSI编码)。以下是我用来将xhtml转换为pdf的代码。

    String inputFile = "samples/input.xhtml";
    String url = new File(inputFile).toURI().toURL().toString();
    String outputFile = "output.pdf";
    OutputStream os = new FileOutputStream(outputFile);

    ITextRenderer renderer = new ITextRenderer();
    renderer.setDocument(url);
    renderer.layout();
    renderer.createPDF(os);
    os.close();

应该做些什么来确保pdf生成在任何情况下都不会失败?

下面是另一个xhtml(input2.xhtml-UTF-8编码)。它成功转换为pdf。但是生成的pdf没有显示特殊字符。为什么这个字符不存在于生成的pdf中?应该做些什么来确保这些类型的字符存在于pdf中?

当输入xhtml中存在NUL字符(U 0000)时,pdf生成也失败?这是因为xml中不允许NUL吗。如果xhtml中存在NUL,那么仍然可以使用飞碟生成pdf吗?

输入xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>My First Document</title>
    <style type="text/css"> b { color: green; } </style>
</head>
<body>
    <p>
        <b>Greetings Earthlings! ü </b>
        We've come for your Java.
    </p>
</body>
</html>

input2.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>My First Document</title>
    <style type="text/css"> b { color: green; } </style>
</head>
<body>
    <p>
        <b>Greetings Earthlings! ü Ɠ </b>
        We've come for your Java.
    </p>
</body>
</html>

共有1个答案

相旭
2023-03-14

关于问题的第一部分,字符Ɠ没有出现的原因是默认字体没有表示形式。

如果要打印,必须嵌入包含此字符的字体,例如Arial Unicode MS。

可以这样做:

  ITextRenderer renderer = new ITextRenderer();
  renderer.getFontResolver().addFont("ARIALUNI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
 类似资料:
  • 我使用的罐子来自maven repo 我正在测试的代码来自以前的堆栈解决方案 我担心它可能过时了,因为图书馆被贬值了。测试以下代码时: 这一行我有以下错误:

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

  • 我正在使用飞碟生成pdf文件。我想要第一页,第二页是横向模式,其余的是纵向模式。所以,我这样做: 但是它会自动在第一个pdf文件中创建2个空白页?如何修复它?

  • 我有下面给我的html,当我把这个转换成PDF使用飞碟,它不适合A4的肖像大小。如何生成横向pdf文件。 我使用下面给定的代码将html转换为pdf

  • 我想用外部资源(jpg、css)从html创建pdf。 这是用于生成pdf File对象的代码,带有Flie Saucer和itext: 不幸的是,所有与https链接的资源都被忽略,而超文本传输协议资源运行良好。 编辑: 我扩展了iTextureAgent以拦截https调用资源,但出现了以下错误: 太阳安全供应商。证书路径。SunCertPathBuilderException:无法找到请求目