1

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

我的 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; 
}

我需要转换的HTML 文件

这些是与 itext 2.1..x 兼容的重新编译的飞碟 jar

4

2 回答 2

3

您的字体可能未嵌入 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;
}

这样字体将被嵌入。

而且你不需要打电话renderer.getFontResolver().addFont,css就足够了。

于 2012-11-20T10:26:22.587 回答
1

试试这个:

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

于 2012-11-20T07:29:36.757 回答