2010-09-20 16 views
4

J'ai besoin d'aide pour utiliser ces symboles ⎕, ∨, ๐, Ʌ, et ainsi de suite. Mais quand je crée un PDF avec iText ces symboles n'apparaissent pas.Caractères spéciaux dans iText

Que puis-je faire pour que ces symboles apparaissent?

Répondre

1

Vous pouvez leur échapper en fonction de la séquence d'échappement Unicode définie dans la spécification de langage Java. Voir http://java.sun.com/docs/books/jls/first_edition/html/3.doc.html

Si vous utilisez IntelliJ IDEA pour votre code, vous pouvez télécharger le plugin StringManipulation, qui fait les échappements pour vous. Dans les paramètres d'IDEA, vous pouvez également définir la case à cocher "Conversion native native-en-ASCII" sous Encodages de fichiers, ce qui devrait vous aider à faire l'affaire.

+0

J'utilise ce codage pour les caractères, mais iText ne les affiche pas. Je veux travailler dans GAE. – barroco

+0

Avez-vous essayé d'échapper aux personnages? – Jes

8

Vous devez utiliser une police et un codage contenant ces caractères. Votre meilleur pari est d'utiliser IDENTITY_H pour votre encodage, car cela vous donne accès à tous les caractères d'une police donnée ... mais vous devez toujours utiliser la bonne police.

Il existe plusieurs exemples de manipulation de la police dans « iText dans l'action de » chapitre sur les polices: http://www.itextpdf.com/book/chapter.php?id=11

Les exemples sont sur le côté droit. L'achat du livre aiderait probablement aussi.

+0

voici un exemple qui vous montre comment régler l'encodage http://itextpdf.com/examples/iia.php?id=164 utf8 fonctionne généralement pour moi – user979490

+0

10x. m'a aidé après 2 ans! – Ioan

2

J'ai eu le même problème aussi et j'ai compris en utilisant IDENTITY_H pour l'encodage fonctionne très bien. Par exemple:

java.awt.Font f =...; 
Font font = FontFactory.getFont(f.getName(),BaseFont.IDENTITY_H) 

Je ne comprends pas pourquoi avec BaseFont.WINANSI cela ne fonctionne pas. Winansi est le jeu de caractères Windows Cp1252 standard, celui utilisé par ma JVM. Donc, si le caractère est correctement affiché en Java, pourquoi ce n'est pas le cas pour PDF?

+0

Qu'est-ce que f dans cette ligne de code? – Milos

+0

une police de type java.awt.Font (j'ai modifié le code) – Zardo

0

place dans le fichier pdf par iText:

BaseFont bf = BaseFont.createFont("c:/windows/fonts/arialbd.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
question.add(new Phrase("\u25A1", new Font(bf, 26))); 

Vous pouvez voir un exemple de fichier pdf here