我正在尝试以最小的内存占用量(例如每个客户端/线程20 MB)将格式化数据的大量内容(例如200 MB)流传输到PDF。 PDF结构是用Adobe Postscript编写的,直接以PDF Postscript格式编写很复杂。我一直在使用以下API将内容流式传输到PDF。
Jasper报告面临的问题是它需要将所有输入数据都放入内存中,并且仅支持OutputStream。 Jasper Reports中有一个支持数据InputStream的功能,但在后端Jasper会将整个InputStream数据加载到内存中并有效地耗尽内存。
iText的问题在于它是商业性的。我现在正在寻找编写自己的Java API,以将包括表格,图像在内的格式化数据直接流化为PDF。我参考了以下书籍以了解PDF结构:
以上书籍仅涵盖基本的PDF格式,例如文本和2D图形。如何将可以使用HTML / CSS生成的表格,图标和所有其他格式绘制为PDF?
我需要一些指针来深入了解PDF结构。或者,是否已经有一个Java API支持将输入内容直接流化为PDF,而无需将所有数据保存在内存中?
注意:无头浏览器(PhantomJS,wkhtmltopdf),Apache FOP,Apache PdfBox通过将整个数据加载到内存中来呈现PDF。