2010-10-04 6 views
2

J'ai du mal à essayer de générer des fichiers PDF contenant des lettres grecques en utilisant itextpdf. Je lis les chaînes d'une source externe en tant que chaînes UTF-8. Les lettres anglaises apparaissent dans les résultats mais pas les grecs. En cherchant le problème, je pense qu'il pourrait être lié à la police utilisée. Je ne sais pas quel fichier ttf utiliser si c'est le problème. Voici comment je crée la policeitext PDF - Les lettres grecques n'apparaissent pas dans le document PDF résultant

BaseFont bfTimes = BaseFont.createFont(FontFactory.HELVETICA,"UTF-8", BaseFont.EMBEDDED); 
Font times = new Font(bfTimes, 12, Font.BOLD); 

toute aide est de bon cœur apprécié!

Répondre

5

Vous devez utiliser une police contenant des caractères grecs. Vous pouvez trouver des polices grecques Unicode here.

Vous pouvez vérifier un exemple here sur l'utilisation de polices unicode de l'auteur de itext.

+0

L'exemple que vous avez indiqué est extrêmement utile. J'ai fini par utiliser arialuni.ttl et ça marche. Merci beaucoup! – fadmaa

+1

Pouvez-vous s'il vous plaît montrer l'exemple? Le lien est mort :( –

+0

@Yiannis Gkoufas: var bf = BaseFont.CreateFont (UnicodeFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); – user2173353

0

En fait, le problème pourrait conduire à la façon dont vous créez la police. Au lieu de passer "UTF-8" comme page de code, essayez d'utiliser "CP1253".

BaseFont bfTimes = BaseFont.createFont(FontFactory.HELVETICA,"CP1253", BaseFont.EMBEDDED); 
Font times = new Font(bfTimes, 12, Font.BOLD); 

BTW, basefont a constnts à cordes statiques pour CP1250, CP1252 et CP1257 ...

0

J'ai utilisé ce code:

BaseFont fonty = BaseFont.createFont("assets/ARIALBD.TTF", BaseFont.IDENTITY_H,  BaseFont.NOT_EMBEDDED); 
    fonty.setSubset(true); 
    Phrase myName = new Phrase("Your Not Latin Words", new Font(fonty,12)); 
    ColumnText.showTextAligned(canvas, 
      Element.ALIGN_LEFT, myName, 66, 400, 0); 

je devais coller le ARIALBD.TTF dans le dossier actif

Questions connexes