喜的朋友正在使用itextpdf-5.3.4.jar创建PDF。 对于显示出卢比符号正在使用自定义的字体。我试过ARIAL.TTF,arialbd.ttf这两种字体,但没有运气卢比sybol不showing.For显示我按照这些链接,但它不是为我工作的卢比符号。 如何显示在MVC3 iText的PDF印度卢比符号 。 这是我使用的代码。
BASEFONT卢比= BaseFont.createFont( “资产/ Arial字体.TTF”,BaseFont.IDENTITY_H,BaseFont.EMBEDDED); createHeadings(CB,495,60, “:” + edt_total.getText()的toString(),12,卢比。);
私人无效createHeadings(PdfContentByte CB,浮子的x,浮子Y,字符串的文字,INT大小,BASEFONT FB){
cb.beginText();
cb.setFontAndSize(fb, size);
cb.setTextMatrix(x,y);
cb.showText(text.trim());
cb.endText();
}
请帮我家伙。
在注释部分,Funkystein写道,您所描述的问题是典型的当
- 您正在使用的不具有字形字体。 要么
- 你不使用正确的编码。
我写了说明了这一个例子: RupeeSymbol
public static final String DEST = "results/fonts/rupee.pdf";
public static final String FONT1 = "resources/fonts/PlayfairDisplay-Regular.ttf";
public static final String FONT2 = "resources/fonts/PT_Sans-Web-Regular.ttf";
public static final String FONT3 = "resources/fonts/FreeSans.ttf";
public static final String RUPEE = "The Rupee character \u20B9 and the Rupee symbol \u20A8";
public void createPdf(String dest) throws IOException, DocumentException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(DEST));
document.open();
Font f1 = FontFactory.getFont(FONT1, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 12);
Font f2 = FontFactory.getFont(FONT2, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 12);
Font f3 = FontFactory.getFont(FONT3, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 12);
Font f4 = FontFactory.getFont(FONT3, BaseFont.WINANSI, BaseFont.EMBEDDED, 12);
document.add(new Paragraph(RUPEE, f1));
document.add(new Paragraph(RUPEE, f2));
document.add(new Paragraph(RUPEE, f3));
document.add(new Paragraph(RUPEE, f4));
document.close();
}
该RUPEE
常数是一个String
,其中包含卢比字符以及卢比符号: "The Rupee character ₹ and the Rupee symbol ₨"
。 字符被存储为Unicode值,因为如果我们存储的人物,否则,他们可能无法正确渲染。 例如:如果你从一个数据库中检索WinAnsi的价值观,你最终会与不正确的字符。
我测试三种不同的字体(PlayfairDisplay-Regular.ttf,PT_Sans的Web-Regular.ttf和FreeSans.ttf),我使用IDENTITY_H
作为编码三次。 我也用WINANSI
第四次以表明它出错,如果你做的。
结果是一个文件名为rupee.pdf :
正如你所看到的,第一两种字体知道如何画人物卢比。 第三个没有。 前两种字体不知道如何绘制卢比符号。 第三个呢。 但是,如果你使用了错误的编码,没有字体得出正确的字符或符号。
简而言之:你需要找到一个知道如何吸引你所需要的字符或符号,那么你必须确保你使用的是正确的编码(用于字体String
以及该Font
)。
您可以下载完整的示例代码在这里 。