iText PDF 中的 Unicode 字符

9

我需要关于iText的帮助。我查看了一些谷歌搜索结果和这里的一些内容,但没有找到适合我的内容。我需要在我的pdf中使用波兰字符,但是我什么也没有得到。以下是我认为很重要的代码,如果需要其他内容,请在评论中写明:

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

另外一个

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

有人能告诉我如何让 PDF 和其他波兰字符中显示 Ł 吗?

更新 我找到了这个链接,但不知道如何在我的项目中使用它: iText PDF 中的波兰字符

3个回答

18

您需要一种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字体文件。这里提供了一份免费的Unicode字体文件列表。


好的,我会用你的代码和一些我从Kamil那里学到的东西来完成这个。谢谢你的帮助。 - Bulit
2
使用FontFactory的方法:FontFactory.getFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.EMBEDDED, 12) - Elas
如何将新字体注册为类的静态字段,例如MyFont?这样我就可以在任何地方使用它,如MyFont.ARIALUNI。 - spazzola

7
取决于所使用的字体和编码方式。我找到了如下内容: 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

如果您正在使用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"来处理土耳其字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接