如何将自定义字体添加到jetpack Compose中的Itext7库

问题描述 投票:0回答:1

我想构建生成 pdf 文件的 Android 应用程序,但我想添加适合应用程序用途的自定义字体。

我尝试使用字符串路径“src/main/...etc”,但它不起作用

阅读IText7文档真的很痛苦,有什么解决办法吗?

kotlin android-jetpack-compose itext7
1个回答
0
投票

我如何使用自定义来生成PDF,如下所示,您会发现它很有用。

有两种方法

  1. 您可以将字体放入
    res/font/..
    文件夹中并使用。
  2. 您可以将字体放入
    assets/..
    并使用。

第一种方法的问题是,当您应用

Proguard
时,它不会按预期工作。

工作方式

不要忘记在

asset
文件夹中添加字体

private fun GeneratePDF() {
        try {
            val path =
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
                    .toString() + "/MyPDF"

            val file = File(path, "my_file.pdf")

            val pdfWriter = PdfWriter(file)
            val pdfDocument = PdfDocument(pdfWriter)
            val document = Document(pdfDocument)

            val font = PdfFontFactory.createFont(
                "assets/regular.ttf",
                PdfEncodings.IDENTITY_H
            )
            document.setFont(font)
            pdfDocument.defaultPageSize = PageSize.A4
            pdfDocument.addEventHandler(PdfDocumentEvent.END_PAGE, TextFooterEventHandler(document))
            
            val secondLine = Paragraph(
                "${
                    SimpleDateFormat(
                        "dd-MM-yyyy hh:mm a",
                        Locale.getDefault()
                    ).format(Date())
                } \n Created By : My"
            ).setBold().setFontSize(12f).setItalic()
            document.add(secondLine)

            val line = SolidLine(1f)
            val linebreak = LineSeparator(line)
            document.add(linebreak)
            
            document.close()
           
        } catch (e: java.lang.Exception) {
            e.printStackTrace()
        }
    }

希望它对你有用。快乐写作:)

© www.soinside.com 2019 - 2024. All rights reserved.