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 :
-
¿Es
compatible
mi
.tff
real ( OpenType ) y puede la fuente realmente representar el carácter? No todas las fuentes representan todos los caracteres enUTF-8
Una vez que haya creado correctamente la extensión de fuente y no funcione, este es probablemente su problema.
- ¿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
- ¿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 seleccionetrue
o establezca la etiqueta entrue
.
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);