ITextRenderer:调整页面高度,以内容(ITextRenderer: Adjust pag

2019-08-17 09:18发布

我使用ITextRenderer生成HTML从一个PDF,我需要做的是收银机收据。 该收据动态宽,当然,动态内容。 这就是说,内容的高度将永远是不同的,现在我在努力寻找调整PDF页面的高度,以内容的方式。 如果它太大了收据到底长的白色部分,如果是做空PDF得到的分页,我需要它是在只有一个页面。

我使用@page {size: Wpx Hpx;}设置页面大小,但它几乎是不可能的(会很痛苦)来计算基于宽度和数据内容的高度。

这是生成PDF的代码:

ITextRenderer renderer = new ITextRenderer();

byte[] bytes = htmlDocumentString.toString().getBytes("UTF-8");
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource is = new InputSource(bais);
Document doc = builder.parse(is);

renderer.setDocument(doc, null);

renderer.layout();
renderer.createPDF(outputStream);
outputStream.flush();
outputStream.close();

我也试过renderer.getSharedContext().setPrint(false); ,但这将引发NPE。

此外@page {-fs-page-sequence: "none";}没有任何的运气。

Answer 1:

我找到了解决办法甚至还没有接近完美,但工程!

@page {
    size: Wpx 1px;
}
* { 
    page-break-inside: always; 
}

这将产生整个内容1px的网页。 然后,我只是要告诉打印所有与页之间0像素的保证金页面的打印机。

为什么这个方案并不完美? 文件大小变为1或2KB到200KB ..不是很好,通过3G流媒体的时候。



文章来源: ITextRenderer: Adjust page height to content