如何处理写入pdf文件中文字符

时间:2012-03-28 14:48:39

标签: java string encoding properties

我正在尝试从属性文件中获取他在utf-8中编码的文本,并使用java中的文档对象将其写入PDF文件。

Document document = new Document();
File file = new File(FILES_PATH + ".pdf");
FileOutputStream fos = new FileOutputStream(file);
PdfWriter.getInstance(document, fos);
.
.
.
pdfTable table;
document.add(table);
document.close();

当我得到属性的值时忽略中文字符。 当我尝试编码字符串而不是我得到的汉字 奇怪的话或“?”。

试图用utf-8,iso-8859-1,gbk或gb3212编写代码。

需要帮助PDF文件才能获得中文字符

1 个答案:

答案 0 :(得分:0)

这不会那样。

为了在PDF中显示Unicode字符(不是内置PDF字体),您需要为文本框架指定自定义字体,并为每个文本片段创建单独的片段,该片段由给定字体覆盖。您还需要将使用过的字体嵌入到PDF文档中(因此,如果您使用的字体的许可证允许分发它们,请考虑。)

因此每个String都可以使用许多字体进行渲染。但是 iText 有类FontSelector,它可以执行该任务:

FontSelector selector = new FontSelector();

BaseFont bf1 = BaseFont.createFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
bf1.setSubset(true);
Font font1 = new Font(baseFont, 12, Font.BOLD);
selector.addFont(font1);
// ... do that with all fonts you need

Phrase ph = selector.process(TEXT);
document.add(new Paragraph(ph));

您可以在我的文章中找到更复杂的示例:Using dynamic fonts for international texts in iText