Synopsis

Cet article décrit comment j'ai pu réparer un problème logiciel qui est arrivé soudainement. Les causes de ce problème sont encore inconnues. Je soupçonne quand même mes upgrades successifs de redhat 9 à fedora core 1, fedora core 2, fedora core 3 et mes compilations de kdelibs à partir du CVS.

Symptôme

Symptôme 1: Lors d'une ouverture d'un document pdf à partir de konqueror: le document ne se charge pas.

Symptôme 2: Lorsque je veux ouvrir un document à partir de kpdf (File > Open) dans un répertoire avec fichier pdf, la boîte de dialogue n'affiche pas la liste des fichiers .pdf.

Symptôme 3: Lors d'une ouverture d'un document à partir de kpdf (File > Open), le logiciel renvoie le message "Could not open file:///document.pdf".

Commentaire: L'ouverture a fonctionnée au moins une fois car je me rappelle d'avoir utiliser la fonctionnalité de sélection de texte dans le kpdf de kde 3.4 peu après mon installation de Fedora Core 3.

Les pistes

  1. J'ai changé les descriptions des types MIME qui existaient sur mon ordinateur pour pdf: application/pdf, application/x-pdf, text/pdf, text/x-pdf. C'est à dire, je plaçais le nom du type MIME dans la description. En regardant sur mon disque dur un répertoire avec un fichier .pdf, la description affiche application/x-pdf. Donc, j'assume que mon ordinateur reconnaît les fichiers comme des application/x-pdf.
  2. Sur #kde (irc.freenode.net), on me parle de application/pdf à deux reprises comme types MIME par défaut sur un ordinateur.
  3. En cherchant "Could not open" kpdf sur google, on trouve une discussion sur un bug avec le code suivant: if ( mimeName == "application/pdf" ).

La résolution

Puisque mon ordinateur associe le type MIME application/x-pdf aux fichiers avec l'extension .pdf, que le code même de KPDF utilise le type mime application/pdf, que les personnes sur #kde parle de application/pdf, je dois changer cette association.

Pour changer cette association, j'ai pris le moyen radical de supprimer le fichier application/x-pdf.desktop de mon ordinateur.

rm ~/.kde/share/mimelnk/application/x-pdf.desktop

Après avoir supprimé le fichier manuellement (on peut aussi le faire via l'interface des types Mime dans KControl), j'ai redémarré kbuildsycoca pour rafraîchir ces associations.

Le type MIME des fichiers .pdf dans la liste de fichiers dans Konqueror est devenu "application/pdf". Je test dans kpdf, tout fonctionne, problème résolu (après 4 jours).

Réflexion

  1. Je n'ai aucune idée des raisons pour lesquelles le type MIME application/x-pdf existe sur mon ordinateur.
  2. Je ne connais pas de moyen simple (interface graphique) pour connaître d'avance les types MIME associés à une extension sur notre disque dur.
  3. KPDF dépend sur le type mime du fichier PDF et non sur l'extension. Les types MIME peuvent avoir plusieurs extensions et chaque extension peut avoir plusieurs types MIME.
  4. KPDF dépend d'une configuration particulière qui n'est pas facilement "configurable".
  5. Il s'agit encore d'un problème de hardcoded string (chaîne de caractère codé à même le code).
  6. Le message d'erreur "Could not open ..." décrit le quoi (que l'usager sait déjà) et non le pourquoi. Il s'agit donc d'un message insignifiant.