我正在使用iText(java库)生成PDF文件。 在这里,我有一个段落,我必须在其中打上复选标记
PdfPCell cell95 = new PdfPCell(new Paragraph((new Chunk('\u2713', FontFactory.getFont(FontFactory.HELVETICA, 11, Font.BOLD, new BaseColor(0,0,0))))));
我正在使用它,但它无效。
答案 0 :(得分:0)
您不能将unicode直接用于PDFPCell。
相反,请创建复选标记图像并将其插入PDFPCell。
答案 1 :(得分:0)
This stackoverflow post和this item from itext-questions表示您需要使用unicode字符集而不是默认的Windows CP1252字符集创建字体 - 尝试使用带编码说明符的getFont
重载:
FontFactory.getFont(FontFactory.HELVETICA, BaseFont.IDENTITY_H, 11, Font.BOLD, new BaseColor(0,0,0))
答案 2 :(得分:0)
使用此代码:
String FONT = "C:/dev/dejavu-fonts-ttf-2.33/ttf/DejaVuSans.ttf";
FontSelector selector = new FontSelector();
BaseFont base = BaseFont.createFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
selector.addFont(FontFactory.getFont(FontFactory.HELVETICA, 12));
selector.addFont(new Font(base, 12));
Phrase ph = selector.process(text);
document.add(new Paragraph(ph));
这里,重点是1)设置BaseFont.IDENTITY_H; 2)只有一些字体提供“复选标记”
答案 3 :(得分:0)
尝试解决。 从https://www.fontsquirrel.com/fonts/dejavu-sans下载dejavu-sans。并将其保存在本地。
使用以下代码将刻度符号写入PDF文档。
private static void writeUsingIText() {
Document document = new Document();
try {
PdfWriter.getInstance(document, new FileOutputStream(new File(FILE_NAME)));
//open
document.open();
Paragraph p = new Paragraph();
p.add("This is my paragraph 1");
p.setAlignment(Element.ALIGN_CENTER);
document.add(p);
Paragraph p2 = new Paragraph();
p2.add("This is my paragraph 2"); //no alignment
document.add(p2);
Font f = new Font();
f.setStyle(Font.BOLD);
f.setSize(8);
document.add(new Paragraph("This is my paragraph 3", f));
document.add(new Paragraph("This is my tick mark ", f));
String FONT = "C:\\Users\\<username>\\Documents\\DejaVuSans.ttf";
FontSelector selector = new FontSelector();
BaseFont base = BaseFont.createFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
selector.addFont(FontFactory.getFont(FontFactory.HELVETICA, 12));
selector.addFont(new Font(base, 12));
char tickSymbol=10003;
String text = String.valueOf(tickSymbol);
Phrase ph = selector.process(text);
document.add(new Paragraph(ph));
//close
document.close();
System.out.println("Done");
} catch (FileNotFoundException | DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}