iText PDF中的Unicode字符

时间:2012-03-04 16:35:36

标签: java swing special-characters itext

我需要iText的帮助我看一些谷歌的结果和一些在这里,但没有找到任何适合我的东西。我需要在我的pdf中使用波兰字符,但我什么都没有。如果需要在评论中写下其他内容,我认为这是一个很重要的代码:

private static Font bigFont = new Font(Font.FontFamily.HELVETICA, 18, Font.BOLD);

另一个

Paragraph par = new Paragraph(Łabadzak, bigFont);

任何人都可以告诉我如何使这个Ł在pdf和其他波兰人角色中可见

更新 我资助这个,但不知道如何将它用于我的项目 Polish character in itext PDF

3 个答案:

答案 0 :(得分:8)

您需要一个unicode字体。这是一个例子:

BaseFont bf = BaseFont.createFont("arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

Paragraph p = new Paragraph("Şinasi ıssız ile ağaç", new Font(bf, 22));

document.add(p);

http://abdullahakay.blogspot.com/2011/11/java-itext-unicode.html

修改

此处,字体文件名arialuni.tff/src/main/resources/下的静态资源,可以是您选择的任何Unicode字体文件。 Here是在线提供的免费Unicode字体文件列表。

答案 1 :(得分:3)

这取决于使用的字体和编码。我发现了这样的事情:

http://itext-general.2136553.n4.nabble.com/Polish-National-Characters-are-not-getting-displayed-in-the-PDF-created-by-iTExt-td2163833.html

有这样的例子:

BaseFont bf = BaseFont.createFont("c:/windows/fonts/arial.ttf", 
BaseFont.CP1250, BaseFont.EMBEDDED); 
Font font = new Font(bf, 12); 
String polish = "\u0104\u0105\u0106\u0107\u0118\u0119"; 
document.add(new Paragraph(polish, font)); 

请记住,某些字体不包含波兰国家字符。

答案 2 :(得分:1)

如果您使用的是com.itextpdf.kernel包,则可以使用PdfEncodings类中不存在的任何编码

PdfWriter writer ;
writer = new PdfWriter( dest ) ;
PdfDocument pdf = new PdfDocument( writer ) ;

Document document = new Document( pdf ) ;

FontProgram fontProgram = FontProgramFactory.createFont( ) ;
PdfFont font = PdfFontFactory.createFont( fontProgram, "Cp1254" ) ;
document.setFont( font );

对于土耳其语字符,我使用了“ Cp1254”