2016-09-15 1 views
0

J'ai essayé de remplir le formulaire pdf. J'ai un gabarit et remplis mes données.Comment puis-je définir le codage pour iText lorsque j'insère une valeur dans un espace réservé sous forme de fichier pdf?

PdfReader reader = new PdfReader(src); 
     FontFactory.register(BaseFont.IDENTITY_H); 
     PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); 
     AcroFields form = stamper.getAcroFields(); 
     String[] split = reportDTO.note.split("\\n"); 
     form.setField("field1", "Значение");//value is some text in UTF-8 

mais ma valeur n'insérez à field1 palceholder. c'est vide. Mais si valeur en anglais par exemple

form.setField("field1", "some text"); 

ce texte inséré sucsessuful.

Comment puis-je définir le codage pour insérer du texte en mode normal?

+0

Je pense qu'il y a un problème avec les polices de fichier PDF. Peut-être que vous devriez ajouter la bonne police en utilisant la méthode ** addSubstitutionFont ** sur ** formulaire ** variable: 'form.addSubstitutionFont (/ * Voici votre police pour l'encodage utf-8 ou Cp1251 * /)' –

+0

Quelle est l'intention de 'FontFactory.register (BaseFont.IDENTITY_H)'? La méthode du registre est documentée pour * enregistrer un fichier ttf- ou un fichier ttc * mais 'BaseFont.IDENTITY_H' est un nom d'encodage. – mkl

Répondre

0

L'une des solutions:

1) police Télécharger qui contient tous les symboles unicode (vous utilisez)

2) Créer la police avec le codage (1251, CP1250, UTF8 etc.)

3) Vous devez ajouter la police en utilisant la méthode addSubstitutionFont d'AcroFields sur la variable de formulaire.

public static final String **FONT = "resources/fonts/ARIALUNI.TTF";** 

    somemethod(){ 
    **Font font = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);** 
    BaseFont baseFont = font.getBaseFont(); 

    PdfStamper stamper = null; 
    try { 
     stamper = new PdfStamper(reader, new FileOutputStream(fileDestination)); 
     AcroFields form = stamper.getAcroFields(); 
     form.addSubstitutionFont(baseFont); 
     form.setField("field1", "Значение"); 
    ... // other fields, catch etc 
    }