Uso de PDFBox para escribir cadenas codificadas en UTF-8 en un PDF

Tengo problemas para escribir caracteres Unicode en un PDF usando PDFBox. Aquí hay un código de muestra que genera caracteres basura en lugar de generar “š”. ¿Qué puedo agregar para obtener soporte para cadenas UTF-8?

PDDocument document = new PDDocument(); PDPage page = new PDPage(); document.addPage(page); PDPageContentStream contentStream = new PDPageContentStream(document, page); PDType1Font font = PDType1Font.HELVETICA; contentStream.setFont(font, 12); contentStream.beginText(); contentStream.moveTextPositionByAmount(100, 400); contentStream.drawString("š"); contentStream.endText(); contentStream.close(); document.save("test.pdf"); document.close(); 

Está utilizando una de las fonts incorporadas ‘Base 14’ que se suministran con Adobe Reader. Estas fonts no son Unicode; en realidad son un alfabeto latino estándar, aunque con un par de caracteres adicionales. Parece que el personaje que mencionas, una s minúscula con un caron (š), no está disponible en el texto en PDF en latín … aunque una mayúscula Š está disponible, pero curiosamente solo en Windows. Consulte el Apéndice D de la especificación PDF en http://www.adobe.com/devnet/pdf/pdf_reference.html para obtener más información.

De todos modos, para llegar al punto … necesitas incrustar una fuente Unicode si quieres usar caracteres Unicode. Asegúrate de tener licencia para incrustar la fuente que elijas … Puedo recomendarte las fonts de fuente abierta Gentium o Doulos porque son gratuitas, de alta calidad y tienen una compatibilidad total con Unicode.