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

Bibliothèques et frameworks PHP Discussion :

[FPDF] sprintf, CUPS, PCL, Debian et locales


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mars 2007
    Messages : 186
    Par défaut [FPDF] sprintf, CUPS, PCL, Debian et locales
    Bonjour,

    Un post pour un problème et sa solution... au cas où ça puisse intéresser quelqu'un un jour.

    Symptôme:
    1. Génération de PDF avec FPDF. Deux modes d'utilisation:
    a. Génération du PDF en ligne dans le navigateur, consultation sur écran -- OK pas d'erreur.
    b. Génération du PDF sur le serveur, traitement de ce PDF par pdf2ps, puis par gs pour le transformer en PCL, envoi du PCL en mode raw sur CUPS par la commande lp -- Impossible de créer le fichier PCL.
    c. Si j'enregistre sur le disque dur de mon PC le fichier obtenu en b, celui-ci est corrompu je ne peux l'ouvrir.

    Diagnostique :
    Je crée le même fichier PDF, mais une fois en ligne et une fois enregistrée sur le serveur. Le fichier généré en ligne, je l'enregistre ensuite sur mon disque dur. Quand je compare la source des deux fichiers, ils sont identiques à l'exception de la directive /MediaBox [0 0 595,28 841,89].
    Dans un cas le séparateur décimal des dimensions est une virgule (fichier corrompu) dans l'autre un point (fichier correct).
    Dans le source de fpdf, je constate que cette directive est générée par sprintf, et que le spécificateur de type est f (et non F). Or le spécificateur de type f utilise les locales (pas F) !!!!

    Conclusion:
    FPDF est sensible aux locales à cause d'un mauvais usage de sprintf. Néanmoins ce problème n'est pas visible en temps normal car il semblerait que le navigateur ré-interpréte à la volée les valeurs des mediabox pour les convertir correctement. Ce problème est par contre visible dès que vous voulez réaliser des traitements sur les fichiers PDF générés. Dans mon cas il s'agissait de rediriger ce PDF vers une imprimante PCL sur le réseau, d'où des transformations ... et pdf2ps est moins souple que mon navigateur

    Solution:
    Forcer les locales dans le système décimal américain sur fpdf... ou modifier toute la source de fpdf en changeant les appels à sprintf.

    Pour que ça serve, Théolude

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 700
    Par défaut
    tu utilises quelle version de FPDF ?
    j'ai sous les yeux la version 1.6 qui est la dernière et je vois bien des "%F" partout et aucun "%f"

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mars 2007
    Messages : 186
    Par défaut
    Citation Envoyé par mathieu Voir le message
    tu utilises quelle version de FPDF ?
    j'ai sous les yeux la version 1.6 qui est la dernière et je vois bien des "%F" partout et aucun "%f"
    /****************************************************************************
    * Logiciel : FPDF *
    * Version : 1.51 *
    * Date : 03/08/2002 *
    * Auteur : Olivier PLATHEY *
    * Licence : Freeware *
    * *
    * Vous pouvez utiliser et modifier ce logiciel comme vous le souhaitez. *
    ****************************************************************************/

    Le problème est que j'ai largement customisé cette version ... j'aurai du mal à adopter une nouvelle.

    Théolude

    PS: Et moi qui pensais avoir trouver et corriger mon premier bug officiel d'un projet extérieur .... bouh !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copie fichier windows vers debian (réseau local)
    Par Ema1714 dans le forum Logiciels Libres & Open Source
    Réponses: 3
    Dernier message: 29/05/2014, 16h43
  2. [FPDI] Fonctionne en local/pas en ligne: "FPDF error: Unexpected data in xref table"
    Par gobi13 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 26/10/2007, 12h27
  3. [Debian Lenny]Impossible de Démarrer Cups
    Par Thrystan dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 20/10/2007, 22h46
  4. Réponses: 2
    Dernier message: 14/06/2006, 09h00
  5. Le réseau local sous Debian
    Par Ultra-FX dans le forum Réseau
    Réponses: 9
    Dernier message: 17/12/2005, 15h01

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