IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Documents Java Discussion :

[iText] Accentuation non prise en compte


Sujet :

Documents Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut [iText] Accentuation non prise en compte
    Bonjour,

    J'effectue une application qui lit un fichier texte, effectue des traitements puis génère un pdf.
    Cependant, tous les accents ne sont pas pris en compte et donc donne : "chantillon" au lieu de "échantillon"...

    Auriez-vous une solution pour résoudre ce léger problème ?

    Cordialement,
    Clément G.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer le code de ce fameux traitement ?
    Autre point, quel est l'encodage d'origine de ton fichier texte...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Voilà le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    public static void ConvertDef() {
     
    		// Creation du document
    		Document document = new Document();
     
     
    		try 
    		{
    			// Creation du "writer" vers le doc
    			// directement vers un fichier
    			PdfWriter.getInstance(document, new FileOutputStream(fname));
    			Font maFonte = new Font();
     
     
    			// Ouverture du document
    			document.open();
     
    			// Ecriture des données du fichier texte en pdf
    			try 
    			{
    				// Création du flux bufférisé sur un FileReader, immédiatement suivi par un 
    				// try/finally, ce qui permet de ne fermer le flux QUE s'il le reader
    				// est correctement instancié (évite les NullPointerException)
    				BufferedReader buff = new BufferedReader(new FileReader(chemin));
     
    				try 
    				{
    					String ligne;
    					String maChaine;
    					String start = "VALUE=";
    					String end = "CELL=";
     
    					// Lecture du fichier ligne par ligne. Cette boucle se termine
    					// quand la méthode retourne la valeur null.
    					while ((ligne = buff.readLine()) != null) 
    					{
    						if (ligne.startsWith("OBJET=CONTROL")) 
    						{
    							//Découpe la chaine
    							maChaine = ligne.substring(ligne.indexOf(start)+start.length(), ligne.indexOf(end));
    							//Supprime guillemets
    							maChaine = maChaine.replaceAll("\"", "");		
    							System.out.println(ligne);
    							if(ligne.contains("TYPE=Label"))
    							{
    								//couleur texte
    								maFonte.setColor(255, 0, 0);
    								document.add(new Paragraph(maChaine, maFonte));
    							}
    							else
    							{
    								document.add(new Paragraph(maChaine));
    							}							
    						}
    						else 
    						{
    						}
    					}				
    					//traitement
    				} 
    				finally 
    				{
    				// dans tous les cas, on ferme nos flux
    				buff.close();
    				}
    				}
    			catch (IOException ioe) {
    				// erreur de fermeture des flux
    				System.out.println("Erreur --" + ioe.toString());
    			}
     
    		} 
    		catch (DocumentException de)
    		{
    			System.err.println(de.getMessage());
    		}
    		catch (IOException ioe)
    		{
    			System.err.println(ioe.getMessage());
    		}
     
    		//Fermeture du document
    		document.close();
    	}
    }
    Comment connaître l'encodage d'un fichier ?

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Avec un outil comme Notepad++ par exemple...

    Ceci dit, tu pourrais déjà mettre ton programme en debug et regarder ce que contient ta chaîne de caractère.
    Si le caractère accentué est présent, c'est peut-être ta font qui ne convient pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Je ne sais pas si tu parles de l'extension du fichier en parlant d'encodage mais c'est un fichier .def

    Dans la console, j'ai des points d'interrogations à la place des accents...

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    J'ai fait un petit test, le problème vient bien de l'encodage du fichier.
    J'ai le même résultat que toi si le fichier source n'est pas UTF-8 et c'est OK après l'avoir converti en UTF-8.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Merci beaucoup de ta réponse !

    Par contre, comment je peux convertir mon fichier texte en UTF-8 ?

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Notepad++
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Et avec gedit, c'est possible ?

    Voir même en code ?

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    A priori, en faisant "Enregistrer sous" tu as "Codage des caractères"
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Par défaut
    Merci ça fonctionne impec'

    Par contre n'auriez vous pas une idée pour le faire directement dans le code, car j'ai une centaine de fichiers encodé en ISO alors qu'il devrait être en UTF-8 ?

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Tu peux t'inspirer de ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    package test;
     
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
     
    public class CharsetConverter
    {
     
        public static void main(String[] args)
        {
            convert(args[0], args[1], args[2], args[3]);
        }
     
        public static void convert(String source, String target, String fromCharset, String toCharset)
        {
            BufferedReader br = null;
            PrintWriter pw = null;
            try
            {
                // flux de lecture
                br = new BufferedReader(new InputStreamReader(new FileInputStream(source), fromCharset));
     
                // flux d'écriture en ISO (valeur par défaut)
                pw = new PrintWriter(target, toCharset);
     
                String ligne = null;
                while ((ligne = br.readLine()) != null)
                {
                    pw.println(ligne);
                }
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            finally
            {
                try
                {
                    pw.close();
                }
                catch (Throwable e)
                {
                }
                try
                {
                    br.close();
                }
                catch (Throwable e)
                {
                }
            }
        }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Couleur non prise en compte en exécution
    Par BECHE dans le forum Langage
    Réponses: 2
    Dernier message: 22/12/2005, 18h14
  2. Installation SP2 + RAM non prise en compte
    Par laure_belette dans le forum Windows XP
    Réponses: 3
    Dernier message: 13/10/2005, 12h46
  3. [css] Feuille de style non prise en compte
    Par Neuromancien2 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 29/06/2005, 11h49
  4. [netbeans] Modifications non prises en compte
    Par nadass dans le forum NetBeans
    Réponses: 6
    Dernier message: 07/04/2005, 13h49
  5. Lecture de fichier - dernière ligne non prise en compte
    Par JulienPles dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo