【发布时间】:2013-03-07 20:23:07
【问题描述】:
我正在使用 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";},没有任何运气。
【问题讨论】:
-
我也面临同样的问题。你找到解决方案了吗?
-
是的,它在“解决方案”下。
-
请将解决方案作为答案发布(而不是在问题本身中),您可以回答自己的问题。谢谢
标签: java css pdf flying-saucer pdfrenderer