Не отображается кириллица в PDF файле, генерируемый библиотекой
В приложении есть текстовое поле, которое при нажатии кнопки сохраняется в PDF файл. Но в файле сохраняется только ангийский. Не знаю что делать с кодировками и наборами шрифтов, решения не могу найти. Библиотека 'com.itextpdf:itextg:5.5.10'
private fun savePDF() {
val mDoc = Document()
val mFileName = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(System.currentTimeMillis())
val mFilePath = Environment.getExternalStorageDirectory().toString() + "/" + mFileName + ".pdf"
try {
PdfWriter.getInstance(mDoc, FileOutputStream(mFilePath))
mDoc.open()
val mText = stateContent.text.toString()
mDoc.addAuthor("Ростсельмаш")
mDoc.add(Paragraph(mText))
mDoc.close()
Toast.makeText(this, "$mFileName.pdf\nis saved to\n$mFilePath",Toast.LENGTH_SHORT).show()
}
catch (e: Exception) {
Toast.makeText(this, e.message, Toast.LENGTH_SHORT).show()
}
}
Ответы (1 шт):
Автор решения: Nobody Knows
→ Ссылка
Для решения этой проблемы необходимо, создать папку assets и поместить туда языковой пакет arial.ttf, скачанный с любого сайта. Потом прописать его в коде и готово.

Прописываем языковой пакет
private val FONT = "/assets/arial.ttf"
private var bf: BaseFont = BaseFont.createFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED)
private var font: Font = Font(bf, 30f, Font.NORMAL)
Применяем на примере кода из вопроса
private fun savePDF() {
val doc = Document()
val fileName = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(System.currentTimeMillis())
val filePath = Environment.getExternalStorageDirectory().toString() + "/" + fileName + ".pdf"
try {
PdfWriter.getInstance(doc, FileOutputStream(filePath))
moc.open()
val text = stateContent.text.toString()
doc.addAuthor("Ростсельмаш")
doc.add(Paragraph(text, font))
doc.close()
Toast.makeText(this, "$fileName.pdf\nis saved to\n$filePath", Toast.LENGTH_SHORT).show()
} catch (e: Exception) {
Toast.makeText(this, e.message, Toast.LENGTH_SHORT).show()
}
}

