ITextRenderer: Dostosuj wysokość strony do zawartości

Używam ITextRenderer do generowania pliku PDF z HTML, a co muszę zrobić, to paragon fiskalny. Ten paragon ma dynamiczną szerokość i oczywiście dynamiczną zawartość. To powiedziawszy, wysokość treści zawsze będzie inna i właśnie teraz staram się znaleźć sposób na dostosowanie wysokości strony PDF do treści. Jeśli jest za duży, na końcu znajduje się długa biała sekcja, a jeśli ma to na celu skrócenie pliku PDF, należy go paginować i potrzebuję go tylko na jednej stronie.

używam@page {size: Wpx Hpx;} aby ustawić rozmiar strony, ale jest to prawie niemożliwe (byłoby bardzo bolesne) obliczyć wysokość zawartości na podstawie szerokości i danych.

Oto kod generujący plik 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();

Próbowałem teżrenderer.getSharedContext().setPrint(false);, ale to rzuca NPE.

Również@page {-fs-page-sequence: "none";} bez szczęścia.

-------------- "Rozwiązanie" ----------------

Rozwiązanie, które znalazłem, nie jest nawet idealne, ale działa!

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

Spowoduje to wygenerowanie stron 1px dla całej zawartości. Następnie muszę tylko powiedzieć drukarce, aby wydrukowała wszystkie strony0px margin między stronami.

Dlaczego to rozwiązanie nie jest idealne? Rozmiar pliku wynosi od 1 do 2 KB do 200 KB .. niezbyt dobry, gdy przesyłamy strumieniowo przez 3G.

questionAnswers(0)

yourAnswerToTheQuestion