Itext 5.5 Добавление изображения в PDF с внешнего диска - PullRequest
0 голосов
/ 23 апреля 2020

Я использую этот метод для добавления изображений в свой PDF.

@Throws(DocumentException::class)
    private fun addImage(document: Document)
    {
        try {
            val rectDoc = document.pageSize
            val width = rectDoc.width
            val height = rectDoc.height
            val imageStartX = width - document.rightMargin() - 300f//Absolute Position X
            val imageStartY = height - document.topMargin() - 500f//Absolute Position Y
            System.gc()

            val ims: InputStream? = activity?.assets?.open("test.jpg")//File Location
            val bmp = BitmapFactory.decodeStream(ims)
            val stream = ByteArrayOutputStream()
            bmp.compress(Bitmap.CompressFormat.JPEG, 100, stream)
            val byteArray: ByteArray = stream.toByteArray()

            val img = Image.getInstance(byteArray) // img.scalePercent(50);
            img.alignment = Image.TEXTWRAP
            img.scaleAbsolute(200f, 200f) // ReAdjusting the JPG
            img.setAbsolutePosition(imageStartX, imageStartY) // Adding Image
            document.add(img)
        } catch (e: Exception)
        {
            e.printStackTrace()
            Log.e("JPG ERROR", e.message)
        }
    }

Этот кодовый блок помогает мне добавлять изображения из папки ресурсов. Мне нужно добавить определенное c изображение с внешнего диска. Я создаю файлы JPG с тем же приложением, которое сохраняет файл JPG.

Я нашел этот кодовый блок, чтобы получить мой файл

val absoluteFile = "UserSignature/Signature.jpg"

            val photoUri: Uri = Uri.withAppendedPath(
                MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL), absoluteFile)

Вот вывод этого: content: //media/external/images/media/UserSignature/Signature.jpg

Могу ли я использовать ту же функцию? Если я не могу, как я могу? Спасибо.

РЕДАКТИРОВАТЬ: Вот решение

@Throws(DocumentException::class , IOException::class)
private fun addImageFromGallery(document: Document)
{
    try {
        val rectDoc = document.pageSize
        val width = rectDoc.width
        val height = rectDoc.height
        val imageStartX = width - document.rightMargin() - 300f//Absolute Position X
        val imageStartY = height - document.topMargin() - 500f//Absolute Position Y
        System.gc()

        val fileLocation = "/storage/emulated/0/Pictures/UserSignature/Signature.jpg"//Example Location - Gallery/UserSignature/Signature.JPG file
        val ims = FileInputStream(fileLocation)
        Log.d("FileInputStreamDebugTag", "Value: $ims")

        val bmp = BitmapFactory.decodeStream(ims)
        val stream = ByteArrayOutputStream()
        bmp.compress(Bitmap.CompressFormat.JPEG, 100, stream)
        val byteArray: ByteArray = stream.toByteArray()

        val img = Image.getInstance(byteArray) // img.scalePercent(50);
        img.alignment = Image.TEXTWRAP
        img.scaleAbsolute(200f, 200f) // ReAdjusting the JPG
        img.setAbsolutePosition(imageStartX, imageStartY) // Adding Image
        document.add(img)
    } catch (e: Exception)
    {
        e.printStackTrace()
        Log.e("JPG ERROR", e.message)
    }
}
...