2014-08-27 5 views
1

Прошу прощения за мой английский. Я пытаюсь создать таблицу с PdfPTable (библиотека iText). Таблица показывает мне пустой столбец! [Введите описание изображения здесь] [1]iText - PdfPTable не показывает символы на кириллице

public class CreatePDF { 
File file; 
BaseFont bf; 
Font f_title; 
Font f_text; 

public void setFont() throws DocumentException, IOException{ 
    try{ 
     bf = BaseFont.createFont("/fonts/Times_New_Roman.ttf", BaseFont.IDENTITY_H , BaseFont.EMBEDDED); 
     f_title = new Font(bf, 14); 
     f_text = new Font(bf); 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 
} 

public void make_invoice() throws DocumentException, IOException{ 
    setFont(); 
    Document doc = new Document(PageSize.A4); 
    Desktop d = Desktop.getDesktop(); 
    try{ 
     file = new File("invoice.pdf"); 
     PdfWriter.getInstance(doc, new FileOutputStream(file)); 
     doc.open(); 
     Paragraph title = new Paragraph(); 
     title.setAlignment(Element.ALIGN_CENTER); 
     title.setFont(f_title); 
     title.add("Счет фактура");//this work! 

     doc.add(create_table()); 

     doc.close(); 

    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 
} 

public PdfPTable create_table() throws DocumentException{ 
    PdfPTable table = new PdfPTable(2); 
    table.setWidthPercentage(100); 
    table.setSpacingBefore(5f); 

    PdfPCell cell; 

    Phrase ph = new Phrase("Номер");//it's doesn't work ((
    ph.setFont(f_text); 

    cell = new PdfPCell(ph); 
    table.addCell(cell); 
    table.addCell("Nuber"); 

    return table; 
} 

Я попробовал использование других шрифтов, но это не помогает мне (((

Как я могу исправить эту проблему?

+0

try 'new Phrase (« Номер », шрифт)' – VahidN

+0

Спасибо! Почему ph.setFont (f_text); не работает? – inoob

ответ

0

при использовании setFont(), изменить шрифт Phrase для всего контента, который добавляется после шрифт был установлен. содержание "Номер" уже присутствует в Phraseперед тем вы изменили его. Следовательно, "Номер" был представлен шрифтом по умолчанию Helvetica. Поскольку Helvetica не знает, как представлять кириллические глифы, текст не отображался.

+0

Спасибо за объяснение! – inoob

Смежные вопросы