2010-10-28 29 views
1

J'utilise l'API iText pour générer du RTF à l'aide de Java. Le fichier RTF est généré correctement, mais une exigence est l'ajout d'un code à barres. Ce que j'ai fait est:La police de code à barres ne se charge pas dynamiquement dans MS Word lors de la génération de RTF à partir de Java en utilisant iText

FontFactory.register("c:\\windows\\fonts\\FREE3OF9.ttf", "Free 3 of 9 Extended"); 
return FontFactory.getFont("Free 3 of 9 Extended",20, Font.NORMAL, Color.BLACK); 

J'ai essayé de charger d'autres polices; cela fonctionnait bien, mais cela ne fonctionne pas lorsque j'utilise la police de code à barres (FREE3OF9.ttf).

Le fichier RTF est généré mais le "Nom de police" ressemble à "Nouveau" au lieu de "Libre 3 sur 9 étendu" dans MS Word lorsque je l'ouvre. Lorsque je sélectionne les mots et choisissez le nom de la police, le code à barres semble très bien.

Je pense qu'il y a un problème avec Free 3 of 9 Extended Font.

Répondre

0

Odd. Je n'ai pas vraiment la réponse, mais je peux certainement offrir quelques conseils.

  • Vérifiez la valeur de retour à partir de getFont(...). Il est tout à fait possible que le problème soit dans l'enregistrement, et vous récupérez juste une police par défaut. Je ne vois pas pourquoi on l'appellerait "New", mais ça vaut vraiment la peine d'être vérifié.
  • Si ce n'est pas le problème, regardez votre sortie RTF brute. Est-ce que la police en question est vraiment "New" ou est-ce que MS la trompe sur le chemin?
    • Vérifiez la sortie RTF de MS lorsque vous choisissez manuellement la police par rapport à la vôtre.
  • Get the iText source, passez à travers, voyez ce qui ne va pas.

Le lien source est à iText v2.1.7, la dernière version qui supportait RTF. Le gars qui a travaillé dessus a disparu dans le web avant cela, donc nous avons arrêté de le supporter avec 5.0 (avec le changement de licence, le renommage du paquet, etc.).