微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

应用程序在创建 pdf 并在 itextpdf 中添加图像时暂停一段时间:itext7

如何解决应用程序在创建 pdf 并在 itextpdf 中添加图像时暂停一段时间:itext7

我正在创建一个应用程序来制作 pdf 并使用存储访问框架将文本和位图图像写入其中。

位图图像是从使用 MPAndroidChart 生成的图表中捕获的,该图表放置在 framelayout 中。仅添加文本时,该过程很快。但是当我添加位图图像时,活动屏幕会变黑并且在大约 10 秒内没有响应。

在 pdf 中,我在起始页中添加了图像。即使有足够的空间,图表也会出现在下一页

如何在没有分页符的情况下将图表添加页面删除无响应的屏幕?

sed -e '/registry1/i\
"registry0.com:5000",' daemon.json

创建pdf的类如下:

var newpdfhandle = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){
    resultData: ActivityResult ->
    val uri = resultData.data?.data
    if (resultData.resultCode == Activity.RESULT_OK){
        if (uri != null){
            var bitmap = getBitmapFromView(fragFrame)     // fragFrame = framelayout containing chart
            if (bitmap != null) {                    
                CreateNewPdf.newPdf(this,uri,framelist,bitmap)                    
            }
        }
    }
}

private fun getBitmapFromView(view: View): Bitmap{
    var bitmap = Bitmap.createBitmap(view.width,view.height,Bitmap.Config.ARGB_8888)
    var canvas = Canvas(bitmap)
    view.draw(canvas)
    return bitmap
}

解决方法

我实现了 Runnable 接口并在其中调用了 pdf 创建函数。我的实现如下:

var newpdfhandle = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){
    resultData: ActivityResult ->
    val uri = resultData.data?.data
    if (resultData.resultCode == Activity.RESULT_OK){
        if (uri != null){
            var bitmap = getBitmapFromView(fragFrame)     // fragFrame = framelayout containing chart
            if (bitmap != null) {                    
                
                val myRunnable = Runnable {
                    Handler(Looper.getMainLooper()).post {
                        pdfProgressbar.visibility = View.VISIBLE
                    }
                    CreateNewPdf.newPdf(this,uri,framelist,bitmap)
                    Handler(Looper.getMainLooper()).post {
                        pdfProgressbar.visibility = View.GONE
                    }
                }
                val thread = Thread(myRunnable).start()

            }
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。