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

使用Java将HTML转换为带有特殊字符的PDF

张晔
2023-03-14

我使用iText 2.1.7的飞碟将html转换为pdf。它工作正常,但当html中有一些中文、韩文等字符时,就会出现问题。

我的PDF中出现意外字符,而不是正常的中文字符

我发现这个问题是公开的,所以我认为目前没有办法让飞碟正确地渲染PDF?

PS:我也发现了这个问题,但我无法理解他们提供的解决方案。

这是我正在使用的代码

String doc = file.toURI().toURL().toString();
ITextRenderer renderer = new ITextRenderer();
renderer.getFontResolver().addFont (
    "C:\\ARIALUNI.TTF",
     BaseFont.IDENTITY_H,
     BaseFont.EMBEDDED
);
renderer.setDocument(doc);
String outputFile = "report.pdf";
OutputStream os = new FileOutputStream(outputFile);

renderer.layout();
renderer.createPDF(os);
os.flush();
os.close();

其中file是我试图转换的html。

有没有其他方法或库可以做同样的事情?

这是我正在使用的css

@font-face {
  font-family: "Arial";
  src: url("media/arialuni.ttf");
 -fs-pdf-font-embed: embed;
 -fs-pdf-font-encoding: Identity-H; 
}

我需要转换的超文本标记语言文件

这些是重新编译的飞碟罐,兼容itext2.1… x

共有2个答案

弓俊晖
2023-03-14

试试这个:

font.addFont(Html2Pdfs.class.getResource(“SIMSUN.TTC”).toString().substring(6),BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED)

马弘和
2023-03-14

您的字体可能没有嵌入到PDF文件中。(我怎么知道PDF文件中的字体是否嵌入?)

每个字体都有一个名称,ARIALUNI.TTF定义了Arial Unicode MS,你应该使用它。

所以改变这一点:

@font-face {
    font-family: Arial1;
    src: url("arialuni.ttf");
    -fs-pdf-font-embed: embed;
    -fs-pdf-font-encoding: Identity-H;
}

* {
        font-family: Arial1;
}

对此:

@font-face {
    font-family: Arial Unicode MS;
    src: url("arialuni.ttf");
    -fs-pdf-font-embed: embed;
    -fs-pdf-font-encoding: Identity-H;
}

* {
        font-family: Arial Unicode MS;
}

这样字体就会被嵌入。

而且你不需要调用渲染器。

 类似资料:
  • 问题内容: 有人知道如何将特殊字符转换为in 吗? 例: (“&”号)变为。 (双引号)成为时未设置。 (单引号)仅在被设置时才变为。 (小于)变为。 (大于)变为。 问题答案: 您需要一个功能类似于 但是要考虑到您希望对单/双引号进行不同处理的愿望。

  • 我正在使用Apache POI读取<代码>。docx文件,并在一些操作后写入。<代码>。我使用的docx文件是法语的,但当我在它将一些法语字符转换为特殊字符。示例转换为 下面的代码用于编写文件 默认使用UTF-8。 在调试时,我在写入<代码>之前进行了检查。csv数据保持原样。但它在写作时被转换了吗?我已将默认语言环境设置为语言环境。法语 我错过了什么吗?

  • 想改进这个问题吗?通过编辑这篇文章添加细节并澄清问题。 我有一个特殊字符的输入字符串,如 如果我打印这个字符串,它将返回:正确的。 我想将此字符串转换为特殊字符的Unicode字符串,例如“1a 2\uxx00\uxx01\uxx02......”这样当我打印这个新字符串时,kt也应该给出 我想将其转换为Unicode的原因是我将把它传递给JAVA代码,该代码将把这些Unicode字符写入PDF文

  • 问题内容: 我遇到了一个大问题,即通过jQuery Ajax将数据作为JSON发布到我的服务器。JSLint表示数据正常,并且请求的Content- Type设置为。服务器在PHP 5.2.11上运行,所以我不能使用。 我尝试了url_decode,utf8_decode和html_entities_decode,但似乎没有任何效果。 返回null,但如果执行此操作,一切正常。是发布数据:。 这是

  • 我试图使用xslt将xml中的特殊字符转换为其编码形式。 例子: 等等下面给出了我使用的代码 XML结构是 输出也应该包含xml节点,这就是为什么我在文本区域中使用xsl:拷贝而不是xsl: value-of。因为xsl: value-of Select="name"将只输出这是一个文件 我正在使用XSLT版本1。o 我想要的输出是

  • 问题内容: 我有一个使用DocX4J将html文件转换为DocX的应用程序。我在使用ç,á,é,í,ã等特殊字符时遇到问题。我在html文件中的文本字体是Arial,但是当我将它们转换为DocX时,前面提到的特殊字符将设置为calibri字体。因此,在同一个单词(例如Cláudio)中,我用Arial字体写了“ Cl”,用Calibri字体写了“á”字符,用Arial字体写了“ udio”。 我看