Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[EPUB] Affichage problématique #6223

Closed
okalm opened this issue Jan 19, 2022 · 2 comments
Closed

[EPUB] Affichage problématique #6223

okalm opened this issue Jan 19, 2022 · 2 comments
Labels
C-Epub Concerne l'export en epub S-BUG Corrige un problème

Comments

@okalm
Copy link

okalm commented Jan 19, 2022

Bonjour,

Juste pour signaler qu'il y a un problème d'affichage avec la version epub de la documentation sur le C, le PDF ne pose pas de problème (merci au passage), mais le epub est illisible malheureusement. J'ajoute une image qui sera plus parlante en précisant que toutes les pages s'affichent de cette manière du début à la fin.

img_epub_c

@okalm okalm added the S-BUG Corrige un problème label Jan 19, 2022
@Situphen Situphen added the C-Epub Concerne l'export en epub label Jan 19, 2022
@Arnaud-D
Copy link
Contributor

Arnaud-D commented Jan 21, 2022

Tout ce qui est balises en dehors des titres est échappé, ce qui le fait évidemment apparaître en texte brut.

La dernière publication « saine » est celle-là, publiée fin août : 62 831 853 071 750 décimales de π. Et maintenant ?. Les publications postérieures ont le soucis et celles d'avant ne l'ont pas.


En testant, l'anomalie de génération apparaît avec le correctif de sécurité de septembre.

Plus particulièrement, il semble qu'il se passe quelque chose avec ces deux lignes ajoutées dans le correctif, puisque le problème n'apparaît plus quand on les enlève.

.replace('src"/', f'src="{media_root}')
.replace(f'src="{media_root}{replaced_media_url}', f'src="{media_root}')


Après un peu de lecture, je crois que je tiens un début de solution.

Django gère l'échappement automatiquement dans une certaine mesure, et arrive à suivre si les chaînes renvoyées par les filtres sont safe ou pas. On peut perdre cette information en cours de route, et je pense que c'est ce qu'il s'est passé avec l'ajout des replace à la suite de l'appel à emarkdown.

Il est possible si on est sûr de son coup de forcer le marquage comme safe avec mark_safe, et éviter ainsi à Django d'échapper tout ce qui ressemble à du HTML. Il y a plein une page de doc intéressante à ce sujet.

J'ai fait un test rapide en passant tout le retour de la fonction epub_markdown dans un mark_safe et ça semble résoudre le problème. Je ne suis pas sûr que c'est le meilleur choix, mais ça donne une direction dans laquelle continuer à investiguer.

@philippemilink
Copy link
Member

Corrigé avec #6318.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-Epub Concerne l'export en epub S-BUG Corrige un problème
Projects
None yet
Development

No branches or pull requests

4 participants