Как я могу создать документ PDF, не сохраняя его на устройстве хранения Android? - PullRequest
0 голосов
/ 27 сентября 2019

Я заинтересован в создании документа 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)
    }
}

1 Ответ

0 голосов
/ 27 сентября 2019

вы можете попробовать это без сохранения pdf

https://developer.android.com/reference/android/graphics/pdf/PdfDocument

...