fonts jasper-reports export-to-pdf hindi

fonts - ¿Cómo puedo renderizar hindi correctamente al exportar a pdf?



jasper-reports export-to-pdf (3)

Estoy usando i-report 5.5.0 para informes jasper. Necesito exportar texto en hindi a formato PDF, pero la parte en hindi se está convirtiendo a ??????? .

Ya he usado la extensión de fuente pero no ayudó:

nombre de la fuente : "lohit Devanagari"
PDF incrustado : marcado
Codificación PDF : Identidad-H

También probé otras fuentes Hindi pero nada funcionó hasta ahora.

<textField> <reportElement x="111" y="26" width="100" height="20" uuid="5a471a16-de7b-4f55-9c9f-b01d37938b9f"/> <textElement> <font fontName="Lohit Devanagari" pdfEncoding="Identity-H" isPdfEmbedded="false"/> </textElement> <textFieldExpression><![CDATA[$F{DISTRICT_NAME}]]></textFieldExpression> </textField>


La forma correcta de hacerlo es usar extensiones de fuente . pdfEncoding="Identity-H" está en desuso .

Primero borre esta lista de verificación para representar la fuente en pdf :

  1. ¿Es compatible mi .tff real ( OpenType ) y puede la fuente realmente representar el carácter? No todas las fuentes representan todos los caracteres en UTF-8

Una vez que haya creado correctamente la extensión de fuente y no funcione, este es probablemente su problema.

  1. ¿Le paso la codificación correcta a iText? En caso de dudas (o en general), use la codificación Identity-H, se recomienda para los estándares PDF más nuevos y le brinda la capacidad de mezclar diferentes codificaciones.

Identity-H parece estar bien

  1. ¿Mi fuente está incrustada para que si comparto el pdf también las computadoras que no tienen esta fuente puedan mostrar el contenido?

Incruste su fuente (de lo contrario, si la hace funcionar en su computadora, es posible que no funcione en otros), tenga en cuenta que su jrxml es isPdfEmbedded=false , elimine la etiqueta y en la extensión de fuente seleccione true o establezca la etiqueta en true .

Ahora solo genera la extensión de fuente correctamente y agrégala a tu classpath ,

Cómo agregar extensiones de fuente

EDITAR: después de que el usuario haya pasado la fuente

La fuente Krutidev_011.TTF no es una fuente ttf válida, tal vez porque desafortunadamente el estándar según Apple y el estándar según Microsoft divergieron (supongo que su fuente es una manzana ttf no un tipo abierto ttf).

Caused by: net.sf.jasperreports.engine.JRRuntimeException: java.awt.FontFormatException: java.nio.BufferUnderflowException at net.sf.jasperreports.engine.fonts.SimpleFontFace.setTtf(SimpleFontFace.java:178)

Traté de download una fuente ttf válida Lohit Devanagari de la web y agregarla como extensión de fuente, fontName="Lohit Devanagari" este es mi resultado:

Está procesando las fuentes, pero el resultado puede tener un problema de Ligaturizer , para saber cómo resolverlas, por ejemplo, ¿ por qué el texto gujarati-indio no se representa correctamente con Arial Unicode MS?

Si desea probar esta es la extensión de fuente que utilicé jar de extensión de fuente para Lohit Devanagari , recuerde configurar fontName="Lohit Devanagari"


Tengo el mismo problema, lo resuelvo con la fuente gargi.ttf. descarga aquí con esta configuración

"gargi" => array( ''R'' => "gargi.ttf", ''useOTL'' => 0xFF, ),


esto funcionó para mí

IndicLigaturizer  hindi = new DevanagariLigaturizer(); String result = hindi.process(string);