Rapports piwik au format PDF corrompus

Bonjour,

J’ai une nouvelle installation de Piwik qui est en version 1.12, donc à priori la dernière version disponible à ce jour. Mais déjà dans la version 1.11.1 je rencontrais ce problème. Les rapports envoyés par mail au format PDF ne s’ouvrent pas avec mon lecteur de PDF (kpdf sous Debian GNU/Linux). En regardant de plus près le message d’erreur il semblait qu’il se passait quelque chose de pas frais en fin de fichier PDF.

J’ai ouvert avec un éditeur hexadécimal un de ces rapports défectueux et un pdf que je peux ouvrir. Quand je regarde la fin des fichiers je vois qu’il manque quelque chose sur le PDF Piwik.

Pour prendre un exemple voici la fin (je le met en ascii et pas en hexadécimal c’est plus lisible) d’un fichier PDF envoyé par Piwik :


>>.startxref.42922

Et voici la fin d’un fichier PDF généré sur un de mes sites avec une bibliothèque PDF en ph (donc une production comparable à celle de Piwik), le fichier se termine ainsi :


>>.startxref.289967.%%EOF.

Si je rajoute le end of file précédé des deux % (.%%EOF. ) dans mon fichier piwik je peux alors l’ouvrir et il se comporte normalement.

Comme je ne suis pas un spécialiste du PDF je voulais savoir si quelqu’un avait déjà rencontré cette erreur et s’il y avait une parade ?

Est-ce que l’erreur pourrait venir de la transmission par mail où la conversion du document en base64 pourrait corrompre la fin du fichier ? Dans mon ancienne installation les PDF étaient correctement générés.

Comment obtenir le fichier PDF généré par Piwik avant son envoi par mail (ce serait le moyen de savoir si c’est la génération PDF qui pêche ou la transmission par mail) ?

Merci si quelqu’un peut me mettre sur la voie.

les rapports ouvrent pour moi dans ubuntu, sur windows, mac… Si tu trouves le bug en particulier cela m’interesse, mais c’est peut etre un bug (ou missing feature) dans ton lecteur pdf?

Si j’ouvre le fichier sur le Mac de mon épouse, avec Acrobate (la version complète officielle d’Adobe, pas juste le reader), j’ai un message disant que le fichier est endommagé mais qu’il va le réparer. Et en effet il parvient à l’afficher, mais cela confirme que le fichier pdf n’est pas conforme.

Pourrais tu faire un dump sur la fin d’un des fichiers que tu reçois et comparer avec un autre pdf ne venant pas de Piwik. Voici le dump de la fin du fichier que je viens d’ouvrir sous Acrobat tel qu’il m’arrive


00067480  20 30 30 30 30 30 20 6e  20 0a 30 30 30 30 34 32  | 00000 n .000042|
00067490  31 39 34 32 20 30 30 30  30 30 20 6e 20 0a 74 72  |1942 00000 n .tr|
000674a0  61 69 6c 65 72 20 3c 3c  20 2f 53 69 7a 65 20 34  |ailer << /Size 4|
000674b0  35 20 2f 52 6f 6f 74 20  34 34 20 30 20 52 20 2f  |5 /Root 44 0 R /|
000674c0  49 6e 66 6f 20 34 33 20  30 20 52 20 2f 49 44 20  |Info 43 0 R /ID |
000674d0  5b 20 3c 38 66 64 61 61  30 34 30 62 65 34 32 62  |[ <8fdaa040be42b|
000674e0  61 34 39 61 66 39 38 39  63 63 30 35 66 63 36 31  |a49af989cc05fc61|
000674f0  62 66 32 3e 20 3c 38 66  64 61 61 30 34 30 62 65  |bf2> <8fdaa040be|
00067500  34 32 62 61 34 39 61 66  39 38 39 63 63 30 35 66  |42ba49af989cc05f|
00067510  63 36 31 62 66 32 3e 20  5d 20 3e 3e 0a 73        |c61bf2> ] >>.s|

Puis voici le dump du fichier ouvert sous Acrobat et enregistré par Acrobat avec la fonction enregistrer-sous :


00064a20  43 3e 5d 2f 49 6e 66 6f  20 31 39 20 30 20 52 2f  |C>]/Info 19 0 R/|
00064a30  4c 65 6e 67 74 68 20 38  31 2f 52 6f 6f 74 20 32  |Length 81/Root 2|
00064a40  31 20 30 20 52 2f 53 69  7a 65 20 32 30 2f 54 79  |1 0 R/Size 20/Ty|
00064a50  70 65 2f 58 52 65 66 2f  57 5b 31 20 33 20 31 5d  |pe/XRef/W[1 3 1]|
00064a60  3e 3e 73 74 72 65 61 6d  0d 0a 68 de 62 62 00 01  |>>stream..h.bb..|
00064a70  26 46 36 c1 18 06 26 06  06 46 5f 10 c9 5a 8d 60  |&F6...&..F_..Z.`|
00064a80  73 bc 04 b3 93 41 24 97  3e 88 64 f2 07 8b 80 d5  |s....A$.>.d.....|
00064a90  73 8b 80 d9 12 20 92 2f  0a 44 32 cc 02 8b dc 03  |s.... ./.D2.....|
00064aa0  9a f9 6b 7b 11 58 84 81  11 44 32 ff 07 91 4c 60  |..k{.X...D2...L`|
00064ab0  11 46 06 80 00 03 00 ed  df 09 38 0d 65 6e 64 73  |.F........8.ends|
00064ac0  74 72 65 61 6d 0d 65 6e  64 6f 62 6a 0d 73 74 61  |tream.endobj.sta|
00064ad0  72 74 78 72 65 66 0d 31  31 36 0d 25 25 45 4f 46  |rtxref.116.%%EOF|

Celui-là s’ouvre sans problème sous Kpdf et KGhostView. Il a modifié la fin du fichier et on voit qu’il a rajouté le %%EOF.

Le fichier qui me parvient est donc bien tronqué. Si tu peux regarder sur les fichiers que tu reçois. Peut-être que ton reader est plus permissif que Kpdf en ce qui concerne les erreurs pdf. Si tu as la même erreur il faudra essayer de voir si cela vient de la transmission ou de la génération du pdf.