Dúvida sobre complexidade da impressão

Olá a todos(as)!
Sou iniciante em Java. Tenho estudado sobre o antigo iReports e sobre o atual JasperStudio, porém, não consigo criar uma rotina para imprimir ou resolver a situação a seguir. Talvez alguém possa me dar uma idéia…

Tenho no banco uma lista de produtos. Quando o usuário seleciona um dos produtos, o mesmo é aberto em uma TableView e suas características são apresentadas na tela. Em decorrência da necessidade, algumas vezes eu preciso trocar algumas características de posição entre elas.

Exemplo:
Produto X (selecionado): mostra as características A, B, C, D, E, F;

Através de comandos o usuário poderá priorizar a importância da característica, alterando e exibindo a ordem para: D, E, A, B, C, F (por exemplo).

Problema: Se eu fizer apenas relacionamento entre tabelas, não consigo alterar facilmente essa ordem de exibição e controle da sequência.

Solução: Salvei os itens em uma única string, separadas por um delimitador:
String caracteristicas = “A;B;C;D;E;F”;

Quando o produto X é selecionado, ele dá um split nas características, quebrando a string pelo delimitador ; (ponto-e-vírgula) e joga cada característica em um ArrayList na ordem em que se encontra. O usuário então ordena, reordena, manipula como quer e depois faz um update, que salva na sequência atual:

String caracteristicas = “D;E;A;B;C;F”;

Até aí tudo bem… está funcionando perfeitamente! Todavia, ao enviar para impressão, eu necessito que cada uma dessas características, que estão salvas em uma única célula, seja quebrada em várias linhas e dispostas novamente em formato de relatório. Tenham em mente que posso ter até 50 características para determinado produto e elas precisam ser impressas na ordem de importância que o usuário escolheu.

Essa “quebra” que não consigo realizar, não encontrei nada a respeito via JasperReports.

Além disso, em alguns casos, características semelhantes poderão ficar agrupadas em uma mesma linha (aí que lascou de vez)!

Eu consegui gerar um arquivo HTML que faz perfeitamente isso! Criei dinamicamente o HTML, CSS, validei no W3C e está funcionando perfeitamente! Contudo, necessito do navegador para poder fazer a impressão…

Será que alguém conhece algum método que faça isso, sem depender do navegador padrão? Esse navegador poderá ser diferente em cada máquina de cada usuário…
Com JasperReports ficaria mais “formal”, mais “elegante”, porém não consigo criar o layout que preciso:

Exemplo do relatório:


Característica D Opções: | | | | | | | | | | | | | |


Característica E Opções:| | | | | | | | | | | | | |
Característica A Opções:| | | | | | | | | | | | | |


Nesse caso as características A e E são semelhantes…
Obs: Cada | | representa a coluna de uma tabela (como ‘td’ da ‘table’)

É possível fazer isso no JasperStudio? Alguém tem algum tutorial? Ou alguma maneira que eu possa fazer para imprimir HTML sem necessitar das configurações de margem e da escolha do navegador padrão do sistema?