Я использую этот метод для добавления изображений в свой 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)
}
}