Не отображается кириллица в 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, скачанный с любого сайта. Потом прописать его в коде и готово. assets

Прописываем языковой пакет

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()
    }
}

результат

→ Ссылка