我想在我的片段中生成一个pdf文档...我想更改字体,因为默认字体ammit波斯/阿拉伯字符...我使用下面的代码来加载字体:
val fontData = context.assets.open("font/yekanbakh.ttf").readBytes() val fontProgram = FontProgramFactory.createFont(fontData) val myFont = PdfFontFactory.createFont(fontProgram, PdfEncodings.IDENTITY_H, true)
val document = Document(pdfDocument, PageSize.A4)
document.add(Paragraph(line1).setFont(myFont))
document.add(Paragraph(line2).setFont(myFont))
但是我遇到了以下错误:
ava.io.FileNotFoundException: font/yekanbakh.ttf
我仍然尝试 context.assets.open("fonts/yekanbakh.ttf").readBytes().
但是我失败了并得到了同样的错误......完整的代码是:
val 目录= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
val name = "hoghugh${Random.nextInt(1..1000)}"
val myFile = File(dir, "$name.pdf")
try {
val fileOutputStream = FileOutputStream(myFile)
val pdfWriter = PdfWriter(fileOutputStream)
val pdfDocument = PdfDocument(pdfWriter)
val typeface = ResourcesCompat.getFont(requireContext(),R.font.yekanbakh)
val context = requireContext()
try {
val fontData = context.assets.open("font/yekanbakh.ttf").readBytes()
val fontProgram = FontProgramFactory.createFont(fontData)
val myFont = PdfFontFactory.createFont(fontProgram, PdfEncodings.IDENTITY_H, true)
val document = Document(pdfDocument, PageSize.A4)
document.add(Paragraph(line1).setFont(myFont))
document.add(Paragraph(line2).setFont(myFont))
val table1 = Table(subHeaders1.size)
.useAllAvailableWidth()
.setFontSize(10f)
subHeaders1.forEach { col ->
table1.addHeaderCell(col)
}
body1.forEach { row ->
row.forEach { col ->
table1.addCell(col.toString())
}
}
document.add(table1)
val table2 = Table(subHeaders2.size)
.useAllAvailableWidth()
.setFontSize(10f)
subHeaders2.forEach { col ->
table2.addHeaderCell(col.toString())
}
body2.forEach { row ->
row.forEach { col ->
table2.addCell(col.toString())
}
}
document.add(table2)
val table3 = Table(subHeaders3.size)
.useAllAvailableWidth()
.setFontSize(10f)
subHeaders3.forEach { col ->
table3.addHeaderCell(col)
}
body1.forEach { row ->
row.forEach { col ->
table3.addCell(col.toString())
}
}
document.add(table3)
document.add(Paragraph(line3))
document.close()
fileOutputStream.close()