【问题标题】:iText7 PDF taking time to generateiText7 PDF 需要时间来生成
【发布时间】:2019-05-12 07:17:25
【问题描述】:

我正在尝试使用 iText 在 android 中生成 PDF。 PDF 已成功生成,但由于添加了图像,生成 PDF 需要一些时间。然后我将我的 PDF 生成代码从 UI 线程移动到后台线程。在此之后,PDF 生成出现了问题。在后台生成 PDF 时,有时某些页面无法加载或图像问题。

源代码

        val document = Document(PageSize.A4, 20f, 20f, 100f, 60f)
        val pdfWriter = PdfWriter.getInstance(document,FileOutputStream(outputPdfPath))
        val event = HeaderFooterPageEvent();
        pdfWriter.pageEvent = event;
        document.isMarginMirroring = false;
        document.open()

        val reportBody = Paragraph()
        reportBody.font = Font(
            Font.FontFamily.TIMES_ROMAN,
            16f,
            Font.NORMAL
        )
        reportBody.alignment = Element.ALIGN_CENTER
        document.add(getTitle("Prior Damage Check In"))
        document.add(createTables(reportBody, checkIn)) //for table creation
        document.add(
                addImage(
                    "image url",
                    PageSize.A4.getWidth() - document.leftMargin() -
                            document.rightMargin(),
                    PageSize.A4.getHeight() - document.topMargin() - document.bottomMargin() - 200,
                    Element.ALIGN_CENTER
                )
            )

添加图片方法:

 private fun addImage(imagePath: String, width: Float, height: Float, alignment: Int): Image? {
    val image = Image.getInstance(imagePath)
    image.setAlignment(alignment)
    //image1.setWidthPercentage(50f);
    image.scaleToFit(width, height)
    return image
 }

上面有6页图片。

请帮忙解决这个问题。

【问题讨论】:

  • 可能你做错了什么。没有人知道,因为没有人看到你的代码。
  • @VladyslavMatviienko 添加了用于生成 PDF 的源代码
  • “花时间生成 PDF” 到底是什么意思?几十秒?一分钟?小时?此外,我没有看到您关闭文档。这可能会导致“有时某些页面无法加载或出现图像问题”。您提到了 itext 7,但您的代码显然适用于 itext 5 或更早版本。
  • @blagae 不同的帽子!
  • @mkl 大约需要 10 秒。文档已关闭。

标签: android pdf itext pdf-generation itext7


【解决方案1】:

您确定在后台工作人员结束工作后保存您的 pdf 文件吗? 您听说过多线程概念中的监视器/关键部分吗?

您应该等待保存 PDF,直到所有后台工作人员都停止使用 PDF。 另请注意,每个后台工作人员(线程)都可以创建 PDF,而不是编辑现有的 PDF,因此您总是会遗漏一些东西,因为 PDF 可能被一个后台工作人员覆盖,这可能导致丢失另一后台工作人员生成的数据(线程)。

【讨论】:

    猜你喜欢
    • 2021-10-23
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    相关资源
    最近更新 更多