我如何创建pdf文档而不将其保存在android设备的存储设备上?

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

我有兴趣创建一个文档pdf而不将其保存在设备的存储器中,我使用的编程语言是kotlin。

事实是,我对文件一旦创建就将其存储在手机的存储器中这一事实不感兴趣,而是在文件创建后就显示了文档的预览,然后我决定是否想要打印或通过邮件或其他方式发送,但是不要将其存储在设备上

我一直在寻找一种做到这一点的方法,但是我没有在互联网上找到任何东西,因此,我非常感谢任何建议。

这是我的代码示例:

private fun createDocument() {
    val proceedBtn: Button = findViewById(R.id.process_payment)
    val invoiceDocument: String = "invoice.pdf"

    try {
        val document = Document()
        //open to write

        val instance = PdfWriter.getInstance(document, FileOutputStream())
        document.open()

        //settings
        document.pageSize = PageSize.A2
        document.addCreationDate()
        document.addAuthor("John Doe")
        document.addCreator("John Doe")

        //font setting
        val colorAccent = BaseColor(0, 153, 204, 255)
        val headingFontSize = 20.0f
        val valueFontSize = 26.0f

        //custom Font
        val fontName = BaseFont.createFont("assets/fonts/NotoSerif-Regular.ttf",
            "UTF-8", BaseFont.EMBEDDED)

        //Add Title to document
        var titleStyle = Font(fontName, 36.0f, Font.NORMAL, BaseColor.BLACK)
        addNewItem(document, "Order details", Element.ALIGN_CENTER, titleStyle)

        val headingStyle = Font(fontName, headingFontSize, Font.NORMAL, colorAccent)
        addNewItem(document, "Order No:", Element.ALIGN_LEFT, headingStyle)

        var valueStyle = Font(fontName, 36.0f, Font.NORMAL, BaseColor.BLACK)
        addNewItem(document, "1234567", Element.ALIGN_CENTER, valueStyle)

        addLineSeparator(document)
        addNewItem(document, "Order Date:", Element.ALIGN_LEFT, valueStyle)
        addNewItem(document, "25/09/2019", Element.ALIGN_LEFT, valueStyle)

        addLineSeparator(document)
        addNewItem(document, "Acount Name:", Element.ALIGN_LEFT, headingStyle)
        addNewItem(document, "John Doe", Element.ALIGN_LEFT, valueStyle)

        addLineSeparator(document)

        //Product detail
        addLineSpace(document)
        addNewItem(document, "Product Details", Element.ALIGN_CENTER, titleStyle)

        addLineSeparator(document)

        addNewItemWithLeftAndRight(document, "Pizza ", "(0,0%)", titleStyle, valueStyle)
        addNewItemWithLeftAndRight(document, "12.0*10000", "12000.0", titleStyle, valueStyle)

        addNewItemWithLeftAndRight(document, "Humburger ", "(0,0%)", titleStyle, valueStyle)
        addNewItemWithLeftAndRight(document, "12.0*10", "120.0", titleStyle, valueStyle)

        addLineSeparator(document)

        addLineSpace(document)
        addLineSpace(document)

        addNewItemWithLeftAndRight(document, "Total", "12120.0", titleStyle, valueStyle)

        //close
        document.close()

        Toast.makeText(this@InvoiceActivity, "Success", Toast.LENGTH_LONG).show()

        printPDF()

    } catch (e: Exception) {
        Log.e("error", ""+e.message)
    }
}
android pdf kotlin document
1个回答
0
投票

您可以在不保存pdf的情况下尝试此操作

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