【问题标题】:How to format String for printing new line in PDF- not printing new line correctly- Kotlin如何格式化字符串以在 PDF 中打印新行 - 无法正确打印新行 - Kotlin
【发布时间】:2021-02-01 02:27:32
【问题描述】:

我有一个输出 textView,我成功地每新行打印一个计算。当我转换为 PDF 或打印时,我期望并打算发生同样的情况。但是,当我在 PDF 创建方法中输入字符串值并单击按钮以从 textView 生成 PDF 时,pdf 全部压缩成一个段落,而不是一个单独的列,每次计算都有新的行。

到目前为止,我已经尝试了几种不同的字符串插值方法,以及更改 setContent 方法以及更改 exportText 值的许多不同组合,但均未成功或更改...

我正在使用此依赖项来编写 PDF:https://github.com/RakeshPonna/PdfFileGenerator

我的按钮按下代码:

// Print version button
    printableVersion.setOnClickListener {
        val exportText = testOutput.text.toString()
        val exportFilename = ""

        CreatePdf(this)
            .setPdfName("Coursing output")
            .openPrintDialog(true)
            .setContentBaseUrl(null)
            .setPageSize(PrintAttributes.MediaSize.ISO_A4)
            .setContent(exportText)
            .setFilePath(pdfFilePath = exportFilename)
            .setCallbackListener(object : CreatePdf.PdfCallbackListener {
                override fun onFailure(errorMsg: String) {
                    makeText(this@MetricEvenGauge, errorMsg, LENGTH_SHORT).show()
                }

                override fun onSuccess(filePath: String) {
                    makeText(this@MetricEvenGauge, "Pdf Saved at: $filePath", LENGTH_SHORT).show()
                }
            })
            .create()
    }

我在应用中的 textView:

PDF/打印屏幕:

感谢任何人的意见和帮助:)

编辑:经过一些输入后,问题已演变为如何从方法中制作此换行语句:

for (index in 1..testNumber.toInt()) {
        calculation += "\nTest #$index = ${index * (testLevel + 
attempt)}"

使用 html,这不起作用:

// Print version button- working of PDF printing
    printableVersion.setOnClickListener {
        val exportText = testOutput.text.toString()

        val htmlText = "<html><br>$exportText<br></html>"

        val exportFilename = ""

        CreatePdf(this)
            .setPdfName("Coursing output")
            .openPrintDialog(true)
            .setContentBaseUrl(null)
            .setPageSize(PrintAttributes.MediaSize.ISO_A4)
            .setContent(htmlText)
            .setFilePath(pdfFilePath = exportFilename)
            .setCallbackListener(object : 
CreatePdf.PdfCallbackListener {
                override fun onFailure(errorMsg: String) {
                    makeText(this@MetricEvenGauge, errorMsg, 
LENGTH_SHORT).show()
                }

                override fun onSuccess(filePath: String) {
                    makeText(
                        this@MetricEvenGauge,
                        "Pdf Saved at: $filePath",
                        LENGTH_SHORT
                    ).show()
                }
            })
            .create()
    }

【问题讨论】:

    标签: android kotlin pdf


    【解决方案1】:

    您使用的库只是将输入加载到 WebView 中,因此它会采用 HTML 格式。使用&lt;br&gt; 换行。

    【讨论】:

    • 我能得到一些帮助来实现它吗?看 HTML 让我头脑发热。
    • 我找不到任何足够简单的东西我可以理解来实现它。我不知道如何将我的字符串转换为 HTML 然后格式化它。我不一定期望得到直接的答案,但我希望通过简单的文档指出正确的方向。我只在 kotlin 呆了 3 周......我也不明白 HTML 换行符如何将其转换为我想要的: for (index in 1..testNumber.toInt()) { calculation += "\ nTest #$index = ${index * (testLevel + attempt)}"
    • 这个:val htmlText = "
      $exportText" 不起作用...
    • @AppMonster 当然这行不通,它需要一个
      用于每个换​​行符(这就是 br 的意思)。 exportText.lines().joinToString("\n") { HTML.escapeHtml(it) }
    • @AppMonster 错误,我本来打算写 .joinToString("&lt;br&gt;"),但替换了我的文本的错误部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多