Agregar fuentes a la librería PdfBox

En este tutorial vamos a ver como conseguir que pdfBox reconozca otras fuentes solucionando posibles problemas a la hora de renderizar un pdf.

Agregar fuentes al PdfBox

0. Índice de contenidos.


1. Introducción

PdfBox es una herramienta java que nos permite la lectura de los pdf. Es muy útil si estamos trabajando con pdfs y queremos hacer algún tipo de procesamiento o conversión.

Este tutorial está enfocado al agregado de fuentes a pdfBox para mejorar la lectura y posterior pintado de un pdf. Si estás usando pdfBox y hay algunos libros en los que:

  • No se ven bien las letras
  • Los carácteres están tan juntos que no se entienden las frases
  • Falta texto en el libro

es posible que tengas un problema de fuentes.

Como primera opción vamos simplemente a ver como podemos mapear una fuente contra otra parecida. En segundo lugar si no obtenemos buenos resultados con el mapeo, veremos como
añadir directamente nuevas fuentes, y que pdfBox trabaje con ellas.


2. Entorno

  • Hardware: Portátil MacBook Pro 15′ (2.0 GHz Intel i7, 8GB DDR3 SDRAM, 500GB HDD).
  • AMD Radeon HD 6490M 256 MB
  • Sistema Operativo: Mac OS X Snow Leopard 10.6.7
  • Software: Eclipse Helios


3. Mapear fuentes nuevas de Tipo 1

Para ilustrar el tutorial vamos a suponer lo siguiente. Tenemos un libro con la fuente Bodoni-PosterCompressed (ver imagen).

Podéis fijaros como es una fuente con poca separación entre caracteres. Si intentamos construir una imagen de una página que tenga esa fuente pdfBox no la tiene mapeada contra ninguna, con lo que usará la que tenga configurada por defecto, que en la versión 1.8 es Arial.

Arial no funciona muy bien para este tipo de letra. Veamos el resultado de mapear Bodoni-PosterCompressed contra Arial, que es lo que pdfBox haría por defecto.

Como veis al ser Arial una fuente con más espacio entre los caracteres y además estos son más gruesos, no concuerda bien y las letras nos salen superpuestas.

La solución más fácil que podemos dar para resolver nuestro problema es hacer una correspondencia entre la fuente original del PDF y una que se le parezca. En la ruta pdfbox/src/main/resources/org/apache/pdfbox/resources/FontMapping.properties tenemos un fichero de propiedades donde al final del todo vemos algunos mapeos para algunas fuentes.

Vamos a probar a introducir la siguiente entrada: Bodoni-PosterCompressed=Courier. Ahora el título nos saldría de la siguiente forma:

Esto es así básicamente porque el fuente Courier es más parecido a Bodoni-PosterCompressed. Una vez encontremos una fuente que se asemeja a la que queremos usar tenemos que buscarla de entre las fuentes de java.awt. Estas fuentes se conforman en un mapa en la clase FontManager.

El mapa tendría más o menos la siguiente estructura: {couriernewpsmtbold=java.awt.Font[family=Courier New,name=CourierNewPS-BoldMT,style=plain,size=1], osaka=java.awt.Font[family=Osaka,name=Osaka-Mono,style=plain,size=1]….. Os he marcado en negrita las fuentes hacia las que podeis hacer el mapeo.


4. ¿Cómo se la fuente que tiene el PDF por dentro?

Ya hemos explicado hacia donde mapear, pero ¿cómo se la fuente origen?

Si ponemos un punto de ruptura en esta función, el parámetro de entrada font, nos dirá el nombre de nuestra fuente, con lo que en el archivo FontMapping.properties deberíamos poner font=osaka, por ejemplo.


5. Situcionaes problemáticas

Una situación problemática que he tenido al manejar la biblioteca es en los casos en que una fuente *.ttf viene embebida en el propio PDF. Al estar embebida la propia lógica del pdfBox intenta usar esa fuente y pregunta carácter a carácter si puede pintarlo. El problema viene porque la fuente que se crea responde siempre que sí puede pintarse y algunos caracteres como acentos o eñes luego en realidad no se pintan. PdfBox asigna una fuente por defecto si no se pueden pintar estos caracteres, pero parece no estar reconociendo bien cuando se puede efectivamente pintar un carácter o no.


6. Conclusiones

Lo ideal sería poder incluir nuevas fuentes adjuntando su archivo *.afm ó *.ttf y que aunque vinieran las fuentes embebidas en el pdf usar las que nosotros definimos en el archivo PDFBox_External_Fonts.properties.

PdfBox reconoce bastantes fuentes y en general el funcionamiento es bastante bueno, pero no se le puede pedir que reconozca todas las fuentes que circulan por internet con las que a alguien se le haya podido ocurrir construir un Pdf o parte de él.


7. Información sobre el autor

Alberto Barranco Ramón es Ingeniero Técnico en Informática de Gestión y Graduado en Ingeniería del Software por la Universidad Politécnica de Madrid

Mail: abarranco@autentia.com.

Twitter: @barrancoalberto

Autentia Real Business Solutions S.L. – «Soporte a Desarrollo».

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Consultor tecnológico de desarrollo de proyectos informáticos.
Ingeniero técnico en informática de gestión y graduado en ingeniería del software por la Universidad Politécnica de Madrid.
Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación.
Somos expertos en Java/Java EE

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

02/03/2026

José Antonio Sánchez Segovia

Zephyr es un RTOS open source respaldado por la Linux Foundation que permite desarrollar dispositivos embebidos conectados, eficientes y escalables, facilitando el paso de prototipo a producto final con una arquitectura mantenible.

23/02/2026

Enrique Casado Díez

LoRa y LoRaWAN son tecnologías clave en el ecosistema IoT cuando se requiere largo alcance y bajo consumo energético. En este artículo analizamos su funcionamiento, Spreading Factor, link budget, arquitectura de red, frecuencias y clases de dispositivos, con un caso práctico real.

19/02/2026

Juan José Díaz Antuña

Copilot Chat es la forma más sencilla y segura de empezar a usar IA en Microsoft 365. En este artículo vemos cómo funciona, cómo activarlo y en qué se diferencia de Microsoft 365 Copilot, Copilot Studio y los Agentes Inteligentes, con ejemplos prácticos y una comparativa clara.