【问题标题】:Convert HTML to PDF with Special Characters using Java使用 Java 将 HTML 转换为带有特殊字符的 PDF
【发布时间】:2012-11-05 21:26:38
【问题描述】:

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

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

我发现this issue 已打开,所以我认为目前没有办法让飞碟正确呈现 PDF?

PS:我也找到了this issue,但是我无法理解他们提供的解决方案。

这是我正在使用的代码

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 file

These是重新编译的飞碟jar,兼容itext 2.1..x

【问题讨论】:

  • 试试,怎么样?如何将 UTF-16 传递给飞碟
  • 出现什么问题?您是否遇到异常,或者您的 PDF 中是否有意外字符?
  • 我的 PDF 中出现了意想不到的字符,而不是正常的汉字
  • 根据你上一个问题的解决方法,貌似是字体问题!
  • 您是否尝试过第二个链接中所说的内容:renderer.getFontResolver().addFont("yourFont-unicode-ready.ttf", "UTF-8", BaseFont.IDENTITY_H);

标签: java itext flying-saucer html-to-pdf


【解决方案1】:

试试这个:

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

【讨论】:

  • 您好,这不起作用。 Html2Pdfs 是不是一些特殊的类,你有可以分享的工作代码吗?
【解决方案2】:

您的字体可能未嵌入 PDF 文件中。 (How do I know if the fonts in a PDF file are embedded or not?)

每种字体都有一个名称,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就足够了。

【讨论】:

    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    相关资源
    最近更新 更多