Как использовать любой шрифт хинди в Itext7? - PullRequest
0 голосов
/ 21 февраля 2020

Я использую iText 7. net для создания PDF на хинди или английском sh на основе ввода выбора языка пользователя, но я не могу найти какой-либо способ конвертировать выбранные файлы шрифтов хинди .ttf в itext Pdffonts , Он отлично работает в Engli sh со стандартными шрифтами Itext.

Это мой код:

    PdfFontFactory.Register(HindiFont1.ToString(), "HindiFont1");

    //Error at this line: Font Not Recognized
    PdfFont myHindiFont1 = PdfFontFactory.CreateFont("HindiFont1", PdfEncodings.IDENTITY_H, true);
    //Create Writer
    PdfWriter writer = new PdfWriter(path);

    //Create Pdf Document Object
    PdfDocument pdf = new PdfDocument(writer);
    Document document = new Document(pdf, size);
    PdfPage page1 = pdf.AddNewPage();
     PdfCanvas canvas3 = new PdfCanvas(page3);
    Rectangle pageSize3 = page3.GetPageSize();

    //String in Title9 Paragraph is a translation of English Phrase
     iText.Layout.Element.Paragraph Title9 = new iText.Layout.Element.Paragraph("ew[;kad fo'kslrk;sa%");

    Title9.SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER);
   // Title9.SetFont(myHindiFont1);

     document.Close();

Код выдает ошибку при сохранении второй строки pdf вверху. переменная HindiFont1 содержит файл .ttf шрифта хинди.

Строка в заголовке 9 Абзац является переводом английского языка sh Фраза.

Может ли кто-нибудь помочь в использовании моих шрифтов хинди? У меня есть 4-5 шрифтов, которые я хочу использовать.

1 Ответ

1 голос
/ 21 февраля 2020

Прежде всего, чтобы извлечь ранее зарегистрированный шрифт, используйте метод PdfFontFactory CreateRegisteredFont вместо CreateFont. Таким образом, замените

PdfFont myHindiFont1 = PdfFontFactory.CreateFont("HindiFont1", PdfEncodings.IDENTITY_H, true);

на

PdfFont myHindiFont1 = PdfFontFactory.CreateRegisteredFont("HindiFont1", PdfEncodings.IDENTITY_H, true);

Затем, если вы хотите добавить текст в абзац, который будет отображаться указанным шрифтом c, сначала установите шрифт, затем добавить текст Таким образом, вместо

iText.Layout.Element.Paragraph Title9 = new iText.Layout.Element.Paragraph("ew[;kad fo'kslrk;sa%");
Title9.SetFont(myHindiFont1);

do

iText.Layout.Element.Paragraph Title9 = new iText.Layout.Element.Paragraph().SetFont(myHindiFont1).Add("ew[;kad fo'kslrk;sa%");

В качестве альтернативы вы можете установить этот шрифт в качестве шрифта по умолчанию для документа:

Document document = new Document(pdf, size);
document.SetFont(myHindiFont1);

iText.Layout.Element.Paragraph Title9 = new iText.Layout.Element.Paragraph("ew[;kad fo'kslrk;sa%");

И, наконец, добавить новый абзац для некоторой сущности, например

document.Add(Title9);

Результат:

enter image description here


Вот последний код, который я использовал для успешной визуализации снимок экрана выше:

String HindiFont1 = @"LEOPALMHINDI15K710.TTF";
PageSize size = PageSize.A4;

PdfFontFactory.Register(HindiFont1, "HindiFont1");

//Error at this line: Font Not Recognized
PdfFont myHindiFont1 = PdfFontFactory.CreateRegisteredFont("HindiFont1", PdfEncodings.IDENTITY_H, true);
//Create Writer
PdfWriter writer = new PdfWriter(@"UseLeopalmhindi15K710LikeDivyanshuAgarwalImproved.pdf");

//Create Pdf Document Object
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf, size);
//document.SetFont(myHindiFont1);
//String in Title9 Paragraph is a translation of English Phrase
//iText.Layout.Element.Paragraph Title9 = new iText.Layout.Element.Paragraph("ew[;kad fo'kslrk;sa%");
iText.Layout.Element.Paragraph Title9 = new iText.Layout.Element.Paragraph().SetFont(myHindiFont1).Add("ew[;kad fo'kslrk;sa%");

Title9.SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER);

document.Add(Title9);

document.Close();
...