iText - iText Font - ¿Como agregar una nueva font/fuente (FontFamily)? - La clase Abstracta BaseFont - iText Propiedades relacionadas con el encoding

Hola, hoy vamos a hablar de la clase BaseFont con un poco mas de detalle  sus propiedades y sus métodos mas importantes,  ¿Como agregar una nueva font?, etc.

La clase Abstracta BaseFont

Como dijimos anteriormente la Clase BaseFont  contiene los tipos de fuentes soportadas como también la ubicación de las mismas.
Por defecto la ubicación de las Fonts es: com/itextpdf/text/pdf/fonts/
Los tipos de letras (FontFamilys) soportados  por defecto son:
  • COURIER
  • HELVETICA
  • TIMES_ROMAN
  • SYMBOL
  • ZAPFDINGBATS
  • UNDEFINED

iText Propiedades relacionadas con el encoding


Las propiedades relacionados con el encoding son:


  • CP1250:  Tipo de encoding  Cp1250.
  • CP1252: Tipo de encoding Cp1252.
  • CP1257: Tipo de encoding Cp1257.
  • WINANSI: Tipo de encoding Cp1252.
  • MACROMAN: Tipo de encoding MacRoman.


 ¿Como agregar una nueva font/fuente (FontFamily)?


En algunos casos tenemos que agregar algún nuevo tipo de letra que iText no contempla.
Primero debemos saber la ubicación y el nombre completo de la fuente a agregar, también tenemos que saber el tipo de encoding a utilizar. En nuestro ejemplo utilizaremos el tipo de de fuente KUNSTLER.TTF, cuya ubicación es C:\fonts\, por otro lado utilizaremos el encoding Cp1252 y por ultimo tenemos que saber si queremos que el PDF contenga la fuente lo cual lo hace mas pesado, pero en el caso de optar a que no la contenga estamos obligados que el sistema operativo en el cual se visualiza el PDF tenga esa fuente, en nuestro ejemplo optaremos que este embebida la fuente..


Una ves definido los datos de arriba obtenemos una instancia de la clase BaseFont. Pasando por parámetros los datos recolectados. Utilizando el método que provee BaseFont llamado createFont()
Usando los atributos de clase BaseFont.

BaseFont baseFont = BaseFont.createFont("C:\\fonts\\KUNSTLER.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED);

Sin los atributos de la clase BaseFont.
"Recordar que el path tenemos que escribir \\ para que tome la \ (slash bar)".



    BaseFont baseFont = BaseFont.createFont("C:\\fonts\\KUNSTLER.ttf", "Cp1252",  true);

    Tenemos que tener en cuenta que esto lo tenemos que realizar dentro de un bloque Try -Catch, debido a que puede lanzar 2 tipos de excepciones DocumentException y IOException
    • DocumentException: Si la fuente no es valida.
    • IOException: Si la fuente no puede ser leída.

    Luego generamos una instancia de la clase Font (Esta clase la vimos con mas detalle en acá) y utilizamos el constructor que permite enviarle una BaseFont.

    Font fuente = new Font(baseFont);

    Finalmente asignamos esta font al elemento, pudiendo ser  Chunk,Phrase, Paragraph, etc.


    documento.add(new Paragraph("iText", fuente));

    Resultado:


    ¿Como agregar una nueva font/fuente (FontFamily)?
    Con la fuente kunstler.ttf
    Código:


    ¿Como agregar una nueva font/fuente (FontFamily)?


    Como siempre espero que les allá servido y resultado útil.

    Link Relacionados
    iText - Chunk - ¿Como agregar texto con la clase Chunk? - Errores Comunes con Chunks - Constructores de la Clase Chunk
    iText - ¿Como generar un PDF con iText? - Clases fundamentales en iText - ¿Como ingresar texto a un PDF con iText?
    iText - Phrase - Constructores de la Clase Phrase - ¿Como agregar texto con la clase Phrase? - ¿Como cambiar el espacio entre lineas en un Phrase?

    iText - iText Font - ¿Como agregar una nueva font/fuente (FontFamily)? - La clase Abstracta BaseFont - iText Propiedades relacionadas con el encoding iText - iText Font - ¿Como agregar una nueva font/fuente (FontFamily)? - La clase Abstracta BaseFont - iText Propiedades relacionadas con el encoding Reviewed by El lado oscuro de java on noviembre 21, 2013 Rating: 5

    No hay comentarios:

    Con la tecnología de Blogger.