Eu virei o google de pernas pro ar esses tempos, tentando transformar HTML em pdf. O mais perto é o carinha que fala para passar pelo Apache Fop, mas é um mega empenho achar o XSLT (e eu precisava que fosse dinâmico).
Achei isto aqui: https://xhtmlrenderer.dev.java.net/
Ele renderiza o HTML inclusive para PDF (e funciona bem legal). Para swing e imagem eu não testei. Documentação acessível. Nunca tinha ouvido falar, e mesmo aqui no fórum tem poucas citações a ele.
Suporta CSS 2.1, alguns itens do CSS 3. Page-breaks, header/footer, page size. O único inconveniente é que precisa ser XHTML; mas isso pode ser obtido usando o JTidy.
A partir daí, bom, google é seu amigo 