2017-06-01 1 views
2

Je crée un pdf en utilisant pdfbox - 2.0.6, j'importe une police personnalisée et remplis le document avec des caractères cyrilliques. Quand je teste sur 3 ordinateurs (2 x Windows et 1 Linux Ubunto basé) c'est ok. Mais quand je déploie mon code au serveur (CentOS en fonction) le code Trow cette exception:pdfbox générer un pdf avec des caractères cyrilliques

java.lang.IllegalArgumentException: No glyph for U+0448 in font FontSans-BoldCyr

J'ai essayé avec les polices par défaut PDFBox (PDType1Font.TIMES_ROMAN , PDType1Font.HELVETICA) mais que je reçois

java.lang.IllegalArgumentException: U+0412 ('Vecyrillic') is not available in this font's encoding: WinAnsiEncoding 
    org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:345) 
    org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:286) 
    org.apache.pdfbox.pdmodel.PDPageContentStream.showText(PDPageContentStream.java:411) 

Le texte que je essayer d'écrire sur le pdf est "Вашето индивидуално предложение".

+0

Avez-vous lu la FAQ? https://pdfbox.apache.org/2.0/faq.html#fontencoding? Si oui, avez-vous utilisé 'PDType0Font.load()' pour charger la police? Si oui, cela signifie que le glyphe n'est pas dans la police. Utilisez une police différente ou copiez la police d'un système d'exploitation sur lequel cela fonctionne. –

Répondre

0

Essayez d'installer des paquets ms polices sur le serveur CentOS et de les utiliser: http://www.itzgeek.com/how-tos/linux/centos-how-tos/how-to-install-microsoft-truetype-fonts-in-centos-6-rhel-6.html

+0

Si j'installe ce paquet et utilise par exemple PDType1Font.TIMES_ROMAN puis-je écrire des mots cyrriliques? –

+0

Non, car cela ne fait pas partie de WinAnsiEncoding. –

+0

Installez simplement DejaVu Sans, PT Sans, ou mieux le groupe @fonts. Si vous voulez manipuler les polices côté serveur, ne construisez pas de systèmes coupés sans polices! Le support par défaut d'i18n Centos est bon, lorsqu'il est laissé seul. – nim