ITextRenderer: настройка высоты страницы в соответствии с содержимым

Я использую ITextRenderer для создания PDF-файла из HTML, и мне нужно получить кассовый чек. Этот чек имеет динамическую ширину и, конечно же, динамический контент. Тем не менее, высота контента всегда будет отличаться, и сейчас яЯ изо всех сил пытаюсь найти способ регулировки высоты страницы PDF в соответствии с содержанием. Если оно'слишком большая квитанция имеет длинный белый участок в конце, и есличтобы сократить PDF получить 'с нумерацией страниц, и мне нужно, чтобы это было только на одной странице.

м использую@page {size: Wpx Hpx;} установить размер страницы, но этоПочти невозможно (было бы очень больно) рассчитать высоту содержимого на основе ширины и данных.

Это код, который генерирует PDF: I '

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";} без удачи.

-------------- "Решение" ----------------

Решение, которое я нашел, даже близко не идеально, но работает!

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

Это создаст 1px страниц для всего контента. Тогда я просто должен сказать принтеру распечатать все страницы с0px margin между страницами.

Почему это решение не идеально? Размер файла составляет от 1 или 2 КБ до 200 КБ. Не очень хорошо при потоковой передаче через 3G.

Ответы на вопрос(0)

Ваш ответ на вопрос