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

Lazarus Pascal Discussion :

Pas d'accent avec la bibliothèque fcl-pdf


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut Pas d'accent avec la bibliothèque fcl-pdf
    Bonjour à toutes et à tous,

    Je souhaite utiliser la bibliothèque fpc-pdf livrée avec Lazarus car elle semble vraiment simple d'usage.

    Malheureusement elle ne veut pas de caractères accentués.

    Est-ce que ça se soigne et comment peut-on faire. J'ai essayé différentes conversions sans résultats.

    Cordialement.

    Pierre.

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 458
    Par défaut
    Bonjour,

    J'ai testé la bibliothèque fcl-pdf et je n'ai pas vu de problèmes d'accents :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     P.WriteText(15, 120, 'Languages: English: Hello, World!');
      P.WriteText(40, 130, 'Greek: Γειά σου κόσμος');
      P.WriteText(40, 140, 'Polish: Witaj świecie');
      P.WriteText(40, 150, 'Portuguese: Olá mundo');
      P.WriteText(40, 160, 'Russian: Здравствуйте мир');
      P.WriteText(40, 170, 'Vietnamese: Xin chào thế giới');
      P.WriteText(40, 180, 'Français  : à demain si vous le voulez bien');
    Avec ça j'ai tous les accents que je demande...

    Cordialement

  3. #3
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Citation Envoyé par acaumes Voir le message
    Bonjour,

    J'ai testé la bibliothèque fcl-pdf et je n'ai pas vu de problèmes d'accents :
    ...

    Avec ça j'ai tous les accents que je demande...

    Cordialement
    Et bien, tu as de la chance. Moi, je n'en ai aucun. J'ai essayé sous Windows 10 et Ubuntu, c'est pareil.

    Qu'est-ce qui pourrait faire que chez toi ça fonctionne et pas chez moi ?

    Cordialement.

    Pierre.

  4. #4
    Membre émérite
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 458
    Par défaut
    J'ai utilisé la démo que l'on trouve dans examples pour le package fcl-pdf...
    Je crois que tu trouveras là tout ce qui te manques....

  5. #5
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 166
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 166
    Par défaut
    Bonsoir,

    Citation Envoyé par acaumes Voir le message
    J'ai utilisé la démo que l'on trouve dans examples pour le package fcl-pdf...
    Je crois que tu trouveras là tout ce qui te manques....
    Comme ces sujets titillent ma curiosité, je suis parti moi aussi du projet d'exemple, suis allé à la pêche aux polices (Ubuntu pas nécessaire [lire+ bas] et c'est tant mieux, le lien --> 404), puis deux-trois modifs de 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
    procedure TPDFTestApp.SimpleText(D: TPDFDocument; APage: integer);
      ...
      P.WriteText(40, 170, 'Vietnamese: Xin chào thế giới');
      P.WriteText(40, 180, 'Français : c''est l''été, leçon de surf à la mer.'); // ligne ajoutée
    
    //  P.WriteText(15, 185, 'Box Drawing: ╠ ╣ ╦ ╩ ├ ┤ ┬ ┴');
    // ligne déplacée un peu plus bas 185 --> 190
      P.WriteText(15, 190, 'Box Drawing: ╠ ╣ ╦ ╩ ├ ┤ ┬ ┴');
    
    procedure TPDFTestApp.SaveDocument(D : TPDFDocument);
    var
      F: TFileStream;
    begin
    //  F := TFileStream.Create('test.pdf',fmCreate);
    // chemin de sortie précis car je ne sais pas où le code a enregistré les premiers essais
      F := TFileStream.Create('/tmp/test.pdf',fmCreate);
    et zou !, ça l'a fait !
    Je ne mets pas les 8 pages du fichier généré, vous pouvez me croire sur parole, il y a bien maintenant sur la 1re page une ligne supplémentaire en français avec accents et cédille, hé ouais !

    EDIT : hélas, j'ai voulu faire tourner le fichier tests/unittests_gui et là, je me suis pris un joli paquet d'erreurs...
    Et il faut la 5e font, celle au lien mort... Peut-être qu'avec une autre... On verra ça demain.
    Bye,

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 252
    Par défaut
    Hello,
    Citation Envoyé par acaumes Voir le message
    J'ai utilisé la démo que l'on trouve dans examples pour le package fcl-pdf...
    Je crois que tu trouveras là tout ce qui te manques....
    Sous quel O.S as-tu essayé la démo ? Parce que moi sous Windows cela plante : déjà je n'avais pas la police FreeSans installée et même si je la rajoute cela plante.
    Ami calmant, J.P

  7. #7
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Chez moi, ça n'affiche toujours pas les accents et autres.

    Ce que j'ai fait :

    dans la procédure "SimpleText" (qui est la seule à être concerné par les accents) j'ai commenté toutes les lignes qui faisaient planter car je n'avais pas téléchargé les fonts nécessaires. Je ne fonctionne donc qu'avec la fonte "Helvetica".

    Comme, pas malin le gars, je ne savais pas que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      F := TFileStream.Create('test.pdf',fmCreate);
      try
        D.SaveToStream(F);
    suffisait pour enregistrer le fichier sur disque, j'avais ajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    {$ifdef windows}
        D.SaveToFile('E:\test.pdf');
    {$endif}
    {$ifdef unix}
        D.SaveToFile('/media/Data/test.pdf');
    {$endif}
    C'est ce fichier que je regardais et qui donc ne montrait pas les accents.

    J'ai donc supprimé cette modification et constaté que le fichier était bien créé ( TFileStream.Create('test.pdf',fmCreate);) et rempli par ( D.SaveToStream(F););

    Malheureusement, ce fichier est le même que celui que j'avais par D.SaveToFile('E:\test.pdf');. Il ne comporte pas les accents.

    Je ne vois pas ce qu'il y a de très différents de ce que vous avez fait et qui fonctionne.

    Cordialement.

    Pierre.

  8. #8
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 166
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 166
    Par défaut
    Bonjour,

    Et moi j'ai un peu creusé les remontées du projet "test" fourni par le package :

    à sa compil j'ai toutes ces lignes (j'ai enlevé les doublons, ainsi que les lignes "blabla not used")
    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
    Compilation du projet, Cible : unittests_gui : Succès, Avertissements : 8, Conseils : 52
    fpparsettf.pp(571,27) Hint: Local variable "GlyphIDArray" of a managed type does not seem to be initialized
    fpparsettf.pp(644,19) Hint: Local variable "WA" of a managed type does not seem to be initialized
    fpparsettf.pp(645,18) Hint: Local variable "W" of a managed type does not seem to be initialized
    fpparsettf.pp(653,18) Hint: Local variable "S" of a managed type does not seem to be initialized
    fpparsettf_test.pas(626,52) Warning: range check error while evaluating constants (4 must be between 0 and 3)
    fpttfsubsetter.pp(250,3) Note: Call to subroutine "procedure TFontSubsetter.WriteUInt16(AStream:TStream;const AValue:Word);" marked as inline is not inlined
    fpttfsubsetter.pp(280,3) Note: Call to subroutine "procedure TFontSubsetter.WriteUInt32(AStream:TStream;const AValue:LongWord);" marked as inline is not inlined
    fpttfsubsetter.pp(467,17) Note: Call to subroutine "function TFontSubsetter.ReadUInt16(AStream:TStream):Word;" marked as inline is not inlined
    fpttfsubsetter.pp(1060,20) Hint: Local variable "newLoca" of a managed type does not seem to be initialized
    fpttf.pp(571,25) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
    fpttf.pp(708,19) Warning: function result variable of a managed type does not seem to be initialized
    fppdf.pp(1464,19) Hint: Function result variable of a managed type does not seem to be initialized
    fppdf.pp(1520,102) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "RawByteString"
    fppdf.pp(3073,21) Hint: Variable "Buffer" of a managed type does not seem to be initialized
    fppdf.pp(3497,31) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
    fppdf.pp(4696,15) Hint: Local variable "ba" of a managed type does not seem to be initialized
    fppdf_test.pas(1286,15) Hint: Local variable "ar" of a managed type does not seem to be initialized
    or je considère qu'un outil de test doit être parfait, sans aucun warning ni rien, sinon, à quoi se fier ?
    Alors quand je vois les trois lignes 11, 14 et 16 avec Warning: ... potential data loss, je tremble.

    Ensuite, pour l'erreur proprement dite de la procedure TTestPDFUTF8String.TestWrite; (il y a plein d'autres procédures en erreur, je n'ai pas creusé), j'ai ça dans la console :
    Invalid UTF-8 string passed to pango_layout_set_text()
    Et ça dans l'IHM du test (à gauche la sortie du test, à droite le code du test en rapport avec l'erreur) :
    Nom : erreur_testwrite.png
Affichages : 291
Taille : 149,8 Ko
    Cet outil n'est pas sérieux : quand je regarde les dates des fichiers, je vois que certains remontent à 2016-2017, or il a dû y avoir des changements, dans les fontes et dans les codes...
    ---

    Maintenant, la question qui tue : ça sert à quoi de se prendre la tête avec un générateur de pdf quand la chose est intégrée à LibreOffice, Gimp et sans doute d'autres ?
    Car s'il faut passer des heures et des heures de tweaking pour mettre en page un document juste parce qu'on veut lui changer la marge et la police et la taille de la police, euh, Writer fera cela bien mieux que moi et en 30 secondes...

  9. #9
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Citation Envoyé par Jipété Voir le message
    ... Maintenant, la question qui tue : ça sert à quoi de se prendre la tête avec un générateur de pdf quand la chose est intégrée à LibreOffice, Gimp et sans doute d'autres ?...
    Même pas mort . En fait, j'en ai besoin car je vais faire une application (avec Lazarus) de facturation pour ma fille. Le format PDF étant lisible par pratiquement tout le monde. Je n'aurai à faire qu'une seule fois le formatage de la feuille. Ensuite, elle sera remplie automatiquement par les données issues d'un formulaire indiquant les items à placer dans la facture.

    Cordialement.

    Pierre.

  10. #10
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 174
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Maintenant, la question qui tue : ça sert à quoi de se prendre la tête avec un générateur de pdf quand la chose est intégrée à LibreOffice, Gimp et sans doute d'autres ?
    Pardon pour le hors-sujet mais si j'avais quelque chose de ce genre à faire, je le ferais avec LaTeX. Il faut un peu de temps au départ pour apprendre, mais le résultat en vaut la peine.

    Le document LaTeX (un simple ficher texte) pourrait être créé par l'application Lazarus et converti en PDF par une ligne de commande.

    Évidemment, il faut installer une distribution LaTeX comme Tex Live (disponible pour Linux et pour WIndows).

    Fin du hors-sujet.

    Bonne continuation.

  11. #11
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 166
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 166
    Par défaut
    Bonjour,

    Citation Envoyé par Roland Chastain Voir le message
    Pardon pour le hors-sujet mais si j'avais quelque chose de ce genre à faire, je le ferais avec LaTeX. Il faut un peu de temps au départ pour apprendre, mais le résultat en vaut la peine.
    Explique : qu'est-ce qu'on peut faire avec LaTeX que LibreOffice Writer ne pourrait pas faire ?

    EDIT : en espérant que ce HS va inciter Pierre à nous donner des nouvelles de ses manips pdf...

  12. #12
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Citation Envoyé par Jipété Voir le message
    ... EDIT : en espérant que ce HS va inciter Pierre à nous donner des nouvelles de ses manips pdf...
    Je n'ai rien fait d'autre que ce que j'ai dit à la fin de mon poste #20, c'est-à-dire rechercher quel nom il faut utiliser dans chaque cas. Voir texte en gras pour la fonte Arial et Arial Bold par exemple :

    Pour utiliser une fonte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      {$ifdef WINDOWS}
        FontID:= Document.AddFont('arial.ttf', 'Arial');
        FontBoldID:= Document.AddFont('arialbd.ttf', 'Arial Bold');
      {$endif}
      {$ifdef UNIX}
        FontID:= Document.AddFont('DejaVuSans.ttf', 'Book');
        FontBoldID:= Document.AddFont('DejaVuSans-Bold.ttf', 'Bold');
      {$endif}
    et pour connaître la dimension en mm d'un texte (pour le cadrer à droite ou au centre par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    {$ifdef WINDOWS}
      gTTFontCache.SearchPath.Add('C:\Windows\Fonts');
    {$endif}
    {$ifdef UNIX}
      gTTFontCache.SearchPath.Add('/usr/share/fonts/truetype/dejavu');
    {$endif}
    gTTFontCache.BuildFontCache;
    {$ifdef WINDOWS}
    lFC:= gTTFontCache.Find('Arial', True, False);
    {$endif}
    {$ifdef UNIX}
    lFC:= gTTFontCache.Find('DejaVu Sans', True, False);
    {$endif}
    Cordialement.

    Pierre.

  13. #13
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 166
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 166
    Par défaut
    Citation Envoyé par ChPr Voir le message
    Je n'ai rien fait d'autre que ce que j'ai dit à la fin de mon poste #20, c'est-à-dire rechercher quel nom il faut utiliser dans chaque cas.
    D'accord, et donc le problème du pdf ci-dessous est réglé ? Les flopées de "???????????????????" ont disparu ?
    Si "oui", un truc m'a échappé ; si "non", il reste un souci...

    Citation Envoyé par ChPr Voir le message
    Voilà la première page de test où se trouve les caractères normaux et gras du test "testfppdf" avec uniquement la fonte "Helvetica". J'ai mis le "Helvetica-bold" pour écrire "Sample Text"

    test.pdf

  14. #14
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 174
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Explique : qu'est-ce qu'on peut faire avec LaTeX que LibreOffice Writer ne pourrait pas faire ?
    Je ne veux pas trop parasiter la discussion, mais voici par exemple un petit truc que j'avais fait pour m'exercer : un programme qui calcule la date de Pâques et des autres fêtes mobiles pour l'année courante, et génère un document LaTeX, converti ensuite en PDF.

    Voici le document PDF généré : fetes.pdf

    On peut dire que le document est relativement joli, non ? Or le programme en Pascal ne fait que calculer et fournir les dates (et le nom des fêtes) : tout le travail de mise en forme est fait par LaTeX.

  15. #15
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 166
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 166
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Je ne veux pas trop parasiter la discussion,
    Bah, elle est quasiment terminée et on reste dans le sujet, alors, on peut bien se permettre une toute petite digression, non ? C'est dimanche,

    Citation Envoyé par Roland Chastain Voir le message
    On peut dire que le document est relativement joli, non ? Or le programme en Pascal ne fait que calculer et fournir les dates (et le nom des fêtes) : tout le travail de mise en forme est fait par LaTeX.
    Oui, très joli, on voit que tu t'es décarcassé à paramétrer les petites majuscules, les chiffres minuscules et les approches, du beau boulot !
    J'ai juste la flemme de jouer à le reproduire avec LO Writer, même si ça ne doit pas être bien compliqué (et pour moi, même plus facile que si je devais me prendre la tête avec LaTeX [rien que taper son nom, c'est la misère !]) : yakà choisir une fonte Garamond ou similaire et zou !
    Mais perso, j'aurais évité ces "0" des dizaines quand il n'y en a pas, un vieux reste d'Excel ou similaire, très moches et inutiles dans ce genre de document.

  16. #16
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 166
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 166
    Par défaut
    Et donc je viens de faire l'essai qui déchire sa race :

    j'ai pris ton code, je n'y ai rien changé à part le chemin des fontes, et ça donne ça :
    Nom : output.png
Affichages : 293
Taille : 40,4 Ko

    N'étant pas très satisfait d'un gras qui a l'air inexistant (même si la largeur des lettres semble être impactée), j'ai fait ensuite un essai avec Writer et son export pdf et y a pas photo :
    Nom : testarial.png
Affichages : 285
Taille : 43,6 Ko

    Tes sorties (enfin, la ligne en Bold) sont mieux ?

    EDIT : petit ajout, comparaison de la sortie du code JP zoomée à 740 %, regardez bien les "t" :
    Nom : zoomé-à-740pc.png
Affichages : 287
Taille : 25,8 Ko

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/12/2022, 17h07
  2. Réponses: 2
    Dernier message: 11/01/2011, 16h12
  3. Pb d'accent avec l'edition au format pdf
    Par penguin50 dans le forum iReport
    Réponses: 1
    Dernier message: 02/11/2009, 14h16
  4. mon CV pdf ne veut pas s'ouvrir avec mon php
    Par misshelen dans le forum Langage
    Réponses: 2
    Dernier message: 16/01/2009, 11h56
  5. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43

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