Как создать PDF на языке урду в Android - PullRequest
0 голосов
/ 27 июня 2019

Может кто-нибудь сказать мне, как я генерирую отчеты в формате PDF на урду или на любом другом языке, кроме английского?Я хочу только заголовки (жестко) на языке урду.Все остальные поля на английском языке.Итак, как я могу написать свои заголовки на языке урду?Все, что я пытаюсь, не работает.PDF создан, но урду не отображается.Вот мой код:

private void savePDF(){
    Document mDoc = new Document();
    fileName = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", Locale.getDefault()).format(System.currentTimeMillis());
    filePath = Environment.getExternalStorageDirectory() + "/Cattle App/" ;
    try{
        File dir = new File(filePath);
        if (!dir.exists())
            dir.mkdirs();

        file = new File(dir, selName + "_" +fileName+".pdf");
        FileOutputStream fOut = new FileOutputStream(file);
        PdfWriter.getInstance(mDoc,fOut);
        mDoc.open();

        mDoc.addTitle("Cattle App");
        mDoc.addSubject("Add Buyer and sellers");
        mDoc.addKeywords("Cattle App");
        mDoc.addAuthor("Softix");
        mDoc.addCreator("Fahad");

        Paragraph preface = new Paragraph();
        Paragraph repTitle = new Paragraph("الیکٹرونک ریکارڈ مینیجمنٹ سسٹم", catFont);
        repTitle.setAlignment(Element.ALIGN_CENTER);
        preface.add(repTitle);

        Paragraph repTitlepowered = new Paragraph("رسید براے ٹیکس فری کیٹل مارکیٹ____________________________", smallBold);
        repTitlepowered.setAlignment(Element.ALIGN_CENTER);
        preface.add(repTitlepowered);
        Paragraph emptyL = new Paragraph("\n");
        preface.add(emptyL);
        mDoc.add(preface);

        mDoc.close();

    }catch (Exception e){
        Toast.makeText(this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
    }
}

1 Ответ

0 голосов
/ 27 июня 2019

Ответ на ваш вопрос - просто. Попробуйте указать шрифт в файле: -

1) вы не указали PdfFont при создании объекта Paragraph. В результате будет выбран PdfFont по умолчанию (Helvetica, обычный, 12).

2) Helvetica не содержит глифов, необходимых для отображения всех возможных сценариев, которые вы перечислили. Когда iText запрашивает PdfFont «пожалуйста, дайте мне глиф для символа x» и PdfFont возвращает ноль, iText просто ничего не рисует. Вот почему он выглядит пустым.

3) Некоторые расширенные типографские функции (среди прочего, лигатуры) доступны только с использованием pdfCalligraph (надстройка с закрытым исходным кодом для iText7). Эти функции необходимы для точного представления хинди, тамильского языка (и различных других незападных сценариев)

...