/ / ¿Puedo generar superscipt en iText usando solo entrada? - java, pdf, itext

¿Puedo generar superscipt en iText usando solo entrada? - java, pdf, itext

Estoy involucrado en un proyecto donde generamos.archivos pdf usando iText. Quiero generar texto en superíndice y sé que existen métodos para convertir fragmentos de texto en superíndice, sin embargo, estoy en una situación en la que es deseable decidir en función de la entrada si un fragmento de texto debe o no ser superíndice. Una solución óptima sería algo como: 2<superscript>nd</superscript> para generar el texto "2Dakota del Norte".

¿Es esto o algo así posible?

Vale la pena señalar que no escribo código directamente en iText, hay capas entre ellos. Es por eso que necesito decidir qué es un superíndice y no se basa en la entrada.

Respuestas

1 para la respuesta № 1

Si no puede modificar el código que está usando iText, entonces no, no hay forma. IText no analiza el texto que ingresa en un Chunk.

Para obtener un comportamiento similar al que desea lograr, tendría que hacer una conversión de HTML a PDF, con el compañero de iText. XMLWorker por ejemplo.


1 para la respuesta № 2

Cuando encuentres un <superscript> etiqueta puedes simplemente crear un Chunk con las propiedades correctas:

public Chunk addSuperscript(String text) {
float leading = determineCurrentLeading();
Font f = determineCurrentFont();
Font supFont = new Font(f);
supFont.setSize(f.getSize() / 2f);
Chunk c = new Chunk(text, supFont);
c.setTextRise(leading / 2f);
return c;
}

Luego, el fragmento se agregará a un Párrafo, un PdfPCell, ... Dependiendo de su implementación, puede determinar el encabezado actual y la fuente utilizada.

Espero que esto te ayudará.