One Document Language, Many Formats: Separating the Layout Engine from PDFBox and Apache POI

PDFBox should not be your architecture, and neither should Apache POI. What happens when one engine resolves the layout once and every output format becomes a backend that only has to translate the result.