Мне нужно поместить данные моего списка в таблицу в файле pdf. В моих данных есть несколько арабских слов. Когда создается мой PDF-файл, арабские слова не отображаются. Я поискал и обнаружил, что мне нужен itext7.pdfcalligraph, поэтому я установил его в своем приложении. Я тоже нашел этот код https://itextpdf.com/en/blog/technical-notes/displaying-text-different-languages-single-pdf-document и попытался сделать что-то подобное, чтобы разрешить арабские слова в моей таблице, но я не мог этого понять вне.
Это пробный код, прежде чем я применю его к своему настоящему списку:
var path2 = global::Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
filePath = System.IO.Path.Combine(path2.ToString(), "myfile2.pdf");
stream = new FileStream(filePath, FileMode.Create);
PdfWriter writer = new PdfWriter(stream);
PdfDocument pdf2 = new iText.Kernel.Pdf.PdfDocument(writer);
Document document = new Document(pdf2, PageSize.A4);
FontSet set = new FontSet();
set.AddFont("ARIAL.TTF");
document.SetFontProvider(new FontProvider(set));
document.SetProperty(Property.FONT, "Arial");
string[] sources = new string[] { "يوم","شهر 2020" };
iText.Layout.Element.Table table = new iText.Layout.Element.Table(2, false);
foreach (string source in sources)
{
Paragraph paragraph = new Paragraph();
Bidi bidi = new Bidi(source, Bidi.DirectionDefaultLeftToRight);
if (bidi.BaseLevel != 0)
{
paragraph.SetTextAlignment(iText.Layout.Properties.TextAlignment.RIGHT);
}
paragraph.Add(source);
table.AddCell(new Cell(1, 1).SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER).Add(paragraph));
}
document.Add(table);
document.Close();
Я обновил свой код и добавил arial.ttf в папку с ресурсами. я получаю следующее исключение:
System.InvalidOperationException: «FontProvider и FontSet пусты. Невозможно разрешить имя семейства шрифтов (см. ElementPropertyContainer # setFontFamily) без инициализированного FontProvider (см. RootElement # setFontProvider). ' и я все еще не могу понять это. Любые идеи? заранее спасибо
tableItems
записи, а также избыточныйtextView
,Toast
,Rsultitem
, закомментированный код. - person Alexey Subach   schedule 07.09.2020FontProvider and FontSet are empty.
. Проверьте возвращаемое значениеset.AddFont("ARIAL.TTF")
- согласно документации метод возвращаетtrue
в случае успешного добавления шрифта иfalse
в противном случае. - person Alexey Subach   schedule 08.09.2020set2.AddFont("C:\\Windows\\Fonts\\Arial.TTF");
, но он все тот же. что я должен делать? - person rana hd   schedule 08.09.2020new File("C:\\Windows\\Fonts\\Arial.TTF").exists()
возвращает истину или ложь? - person Alexey Subach   schedule 10.09.2020