【发布时间】: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