Ant*_*ksh 5 pdf pdf-generation itext java-8
我需要将 HTML 实时转换为 PDF。同样,我正在使用 IText。
PdfDocument inputDoc = new PdfDocument(new PdfWriter(byteArrayOutputStream))) {
String html = "<html><head><Title> My pdf</Title></head></html>";
inputDoc.addEventHandler(PdfDocumentEvent.START_PAGE, new PdfHeaderHandler(pageNumber,
pageCount));
inputDoc.addEventHandler(PdfDocumentEvent.END_PAGE, new PdfFooterHandler(pageNumber,
pageCount));
HtmlConverter.convertToPdf(new ByteArrayInputStream(html.getBytes(StandardCharsets.UTF_8)), inputDoc,
converterProperties);
return new PdfDocument(
new PdfReader(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())));
} catch (IOException exception) {
getLogger().error("Html to Pdf conversion failed for page {} of {} due to error {}", pageNumber, pageCount,
exception.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,如果页数在 30-50 范围内,即使我使用 20 个线程并行转换每个 html 页面,我也会看到巨大的周转时间,每页 5-10 秒。
其中一个例子有 19 页和 20 个线程,日志如下:
2020-06-19 14:54:12.730 [PdfGenerationThreadPoolExecutor-12] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 3
2020-06-19 14:54:12.731 [PdfGenerationThreadPoolExecutor-5] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 2
2020-06-19 14:54:12.736 [PdfGenerationThreadPoolExecutor-6] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 4
2020-06-19 14:54:12.754 [PdfGenerationThreadPoolExecutor-19] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 5
2020-06-19 14:54:12.793 [PdfGenerationThreadPoolExecutor-15] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 7
2020-06-19 14:54:12.793 [PdfGenerationThreadPoolExecutor-10] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 6
2020-06-19 14:54:12.798 [PdfGenerationThreadPoolExecutor-14] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 9
2020-06-19 14:54:12.798 [PdfGenerationThreadPoolExecutor-16] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 8
2020-06-19 14:54:12.798 [PdfGenerationThreadPoolExecutor-7] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 10
2020-06-19 14:54:12.802 [PdfGenerationThreadPoolExecutor-4] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 11
2020-06-19 14:54:12.805 [PdfGenerationThreadPoolExecutor-17] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 12
2020-06-19 14:54:12.807 [PdfGenerationThreadPoolExecutor-8] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 13
2020-06-19 14:54:12.808 [PdfGenerationThreadPoolExecutor-3] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 14
2020-06-19 14:54:12.811 [PdfGenerationThreadPoolExecutor-1] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 15
2020-06-19 14:54:12.813 [PdfGenerationThreadPoolExecutor-2] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 16
2020-06-19 14:54:12.815 [PdfGenerationThreadPoolExecutor-9] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 17
2020-06-19 14:54:12.817 [PdfGenerationThreadPoolExecutor-11] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 18
2020-06-19 14:54:12.819 [PdfGenerationThreadPoolExecutor-13] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 19
2020-06-19 14:54:12.820 [qtp403879268-30] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Waiting for futures to complete
2020-06-19 14:54:12.830 [PdfGenerationThreadPoolExecutor-20] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Converting PDF for page 1
2020-06-19 14:54:20.398 [PdfGenerationThreadPoolExecutor-6] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 4
2020-06-19 14:54:20.416 [PdfGenerationThreadPoolExecutor-11] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 18
2020-06-19 14:54:20.428 [PdfGenerationThreadPoolExecutor-13] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 19
2020-06-19 14:54:20.458 [PdfGenerationThreadPoolExecutor-19] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 5
2020-06-19 14:54:20.488 [PdfGenerationThreadPoolExecutor-12] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 3
2020-06-19 14:54:20.633 [PdfGenerationThreadPoolExecutor-4] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 11
2020-06-19 14:54:20.802 [PdfGenerationThreadPoolExecutor-14] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 9
2020-06-19 14:54:20.905 [PdfGenerationThreadPoolExecutor-8] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 13
2020-06-19 14:54:20.913 [PdfGenerationThreadPoolExecutor-17] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 12
2020-06-19 14:54:21.095 [PdfGenerationThreadPoolExecutor-7] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 10
2020-06-19 14:54:21.144 [PdfGenerationThreadPoolExecutor-10] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 6
2020-06-19 14:54:21.244 [PdfGenerationThreadPoolExecutor-15] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 7
2020-06-19 14:54:21.293 [PdfGenerationThreadPoolExecutor-20] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 1
2020-06-19 14:54:21.327 [PdfGenerationThreadPoolExecutor-1] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 15
2020-06-19 14:54:21.329 [PdfGenerationThreadPoolExecutor-16] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 8
2020-06-19 14:54:21.335 [PdfGenerationThreadPoolExecutor-3] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 14
2020-06-19 14:54:21.360 [PdfGenerationThreadPoolExecutor-9] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 17
2020-06-19 14:54:21.384 [PdfGenerationThreadPoolExecutor-2] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 16
2020-06-19 14:54:21.404 [PdfGenerationThreadPoolExecutor-5] INFO c.p.s.a.s.d.s.i.PdfGenerationService - Done converting PDF for page 2
Run Code Online (Sandbox Code Playgroud)
如果您注意到每个页面都需要大约 8 秒,我们希望将其显着缩短。
有人可以提出任何改进或任何对我们有帮助的替代库吗?
提前致谢。
如果您愿意用 Java 封装 CLI 工具,您可以使用wkhtmltopdf,它是用 C++ 编写的,所以它应该更快。
也有预制的包装材料可供选择。
除此之外,我认为 Java 在速度方面没有太多竞争对手。
OpenPDF只是 IText 的一个分支,大概具有类似的性能。
| 归档时间: |
|
| 查看次数: |
1334 次 |
| 最近记录: |