-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: 🤖 In content/* refactoring article about HTML sanitization
- Loading branch information
Showing
2 changed files
with
241 additions
and
124 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
360 changes: 241 additions & 119 deletions
360
...html-trop-charges-ou-provenant-de-microsoft-word-en-html-valide-et-simplifie.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,140 +1,262 @@ | ||
--- | ||
locale: fr-CA | ||
title: >- | ||
Comment je valide et convertit des documents HTML trop chargés ou provenant de | ||
Microsoft Word en HTML valide et simplifié | ||
locale: fr-CA | ||
created: 2012-08-30 | ||
updated: 2013-06-11 | ||
canonical: >- | ||
https://renoirboulanger.com/blog/2012/08/comment-je-valide-et-convertit-des-documents-html-trop-charges-ou-provenant-de-microsoft-word-en-html-valide-et-simplifie/ | ||
status: publish | ||
revising: true | ||
created: '2012-08-30' | ||
updated: '2013-06-11' | ||
migrateLinks: true | ||
migrateImages: false | ||
gallery: false | ||
caption: false | ||
categories: | ||
- programmation | ||
tags: | ||
- integration | ||
- outils | ||
- techniques | ||
- tutoriels | ||
categories: | ||
- programmation | ||
- php | ||
webarchiveSnapshots: | ||
- key: unoconv | ||
orig: http://dag.wieers.com/home-made/unoconv/#download | ||
- key: stackoverflow-openoffice | ||
orig: http://stackoverflow.com/questions/3405687/openoffice-org-using-uno-to-convert-docx-to-html | ||
- key: tidy-options | ||
orig: http://tidy.sourceforge.net/docs/quickref.html | ||
- key: htmlawed-docs | ||
orig: http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/more.htm | ||
- key: htmlawed-settings | ||
orig: http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/example_settings.htm | ||
- key: htmlawed-home | ||
orig: http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/index.php | ||
preamble: | ||
date: 2024-09-12 | ||
text: | | ||
Il est fort possible que la méthode utilisée ne sois plus reproduisible car les dépendances | ||
ne sont plus disponibles aux versions utilisées. | ||
Cette méthode a été très utile pour convertir des fichiers complexes en pages HTML simplifiées | ||
pour affichier des documents légaux. | ||
Le site qui utilisait cette méthode était pour [l’Union des Artistes (UDA)](https://https://site.uda.ca/) | ||
pour les [ententes collectives](https://site.uda.ca/page/ententes-collectives) et l’engin de recherche | ||
des documents pour les membres. | ||
L’autre partie que j’ai été impliquée pour l'<abbr>UDA</abbr> était notamment l’**écriture** | ||
et l’**architecture** du HTML et le styling CSS pour l’ensemble du site. | ||
La [maquette de travail ("<span lang="en">styleguide</span>") est | ||
disponible ici](https://renoirb.com/past-projects/2012/UnionDesArtistes/) | ||
excerpt: >- | ||
Cette procédure est faite pour permettre de prendre n'importe quel fichier | ||
Word ou HTML généré avec beaucoup de tagsoup en en simplifier a sa plus simple | ||
expression html. Valide. | ||
--- | ||
|
||
<h3>Description</h3> | ||
|
||
<p>Cette procédure est faite optimiser la conversion document word en html, spécialement ceux qui sont généré avec beaucoup de «tagsoup» en en simplifier a sa plus simple expression html. Valide.</p> | ||
|
||
<p><strong>Sauter à la <a href="#CommentconvertirunfichierWordversduHTMLsimpleetvalide-Proc%C3%A9dure">Procédure</a></strong></p> | ||
|
||
<h4>Exemple</h4> | ||
|
||
<h5>Avant</h5> | ||
|
||
<pre><code><h2 class="Standard" dir="ltr" lang="fr-FR" style="margin-top: 0; margin-bottom: 0; text-align: center;" xml:lang="fr-FR"> | ||
<span lang="en-CA" style="font-weight: bold; font-size: 16.0px;" xml:lang="en-CA">TERMS AND CONDITIONS OF 1</span> <span lang="en-CA" style="font-weight: bold; font-size: 16.0px;" xml:lang="en-CA">‐</span> <span lang="en-CA" style="font-weight: bold; font-size: 16.0px;" xml:lang="en-CA">YEAR OR 30</span> <span lang="en-CA" style="font-weight: bold; font-size: 16.0px;" xml:lang="en-CA">‐</span> <span lang="en-CA" style="font-weight: bold; font-size: 16.0px;" xml:lang="en-CA">DAY ACCESS AND USE</span> | ||
</h2> | ||
|
||
<span lang="en-CA" style="font-weight: bold; font-size: 16.0px;" xml:lang="en-CA">OF THE SERVICE BY SUBSCRIBERS</span> <span lang="en-CA" style="font-weight: bold; font-size: 16.0px;" xml:lang="en-CA">SECTION 1</span> <span lang="en-CA" style="font-weight: bold; font-size: 16.0px;" xml:lang="en-CA">PURPOSE OF THE SERVICE</span> | ||
</code></pre> | ||
|
||
<h5>Après</h5> | ||
|
||
<pre><code><h2>TERMS AND CONDITIONS OF 1 ‐ YEAR OR 30 ‐ DAY ACCESS AND USE</h2> | ||
|
||
<span>OF THE SERVICE BY SUBSCRIBERS SECTION 1 PURPOSE OF THE SERVICE</span> | ||
</code></pre> | ||
|
||
<p> </p> | ||
|
||
<h3>Inspiration et pistes</h3> | ||
|
||
<ol> | ||
<li>Convertir de format document en ligne de commandeDe Word2000 vers HTML, voir <strong>UNOCONV</strong> <a class="external-link" href="http://dag.wieers.com/home-made/unoconv/#download" rel="nofollow">http://dag.wieers.com/home-made/unoconv/#download</a></li> | ||
</ol> | ||
|
||
<ul> | ||
<li>Utiliser open office en mode "headless" (en le transformant en service) et y envoyer les documents pour conversionVoir: <a class="external-link" href="http://stackoverflow.com/questions/3405687/openoffice-org-using-uno-to-convert-docx-to-html" rel="nofollow">http://stackoverflow.com/questions/3405687/openoffice-org-using-uno-to-convert-docx-to-html</a></li> | ||
</ul> | ||
|
||
<p> </p> | ||
|
||
<p> </p> | ||
|
||
<p> </p> | ||
|
||
<h3>Procédure </h3> | ||
|
||
<h4>Version abstraite</h4> | ||
|
||
<ol> | ||
<li>Utiliser Open Office (ou peu importe) pour exporter le document en HTML</li> | ||
</ol> | ||
|
||
<p>* Purifier via <tt>HTMLTidy</tt> | ||
* Nettoyer les attributs inutiles avec la classe <tt>htmLawed</tt> </p> | ||
|
||
<h3>Use cases</h3> | ||
|
||
<h4>Document texte seulement</h4> | ||
|
||
<ul> | ||
<li>Pas de formulaire, ni images, etc</li> | ||
<li>Idéal pour un document légal, par exemple.</li> | ||
</ul> | ||
|
||
<h3>Étapes concrètes:</h3> | ||
|
||
<ol> | ||
<li>A partir du fichier HTML généré <strong>exemple</strong>: Fichier appelé "1.1.2.en.html"</li> | ||
</ol> | ||
|
||
<p>* Extraire le fichier <a href="#">htmLawed.zip</a> | ||
|
||
cd ~ | ||
mkdir htmlawed | ||
mv htmLawed.zip htmlawed/ | ||
cd htmlawed | ||
unzip htmLawed.zip</p> | ||
|
||
<p>Passer au travers de la classe <tt>htmLawed</tt></p> | ||
|
||
<pre><code>require('htmLawed.php'); | ||
$config = array('safe'=>1,'elements'=>'a,em,strong,p,ul,li,ol,h1,h2,h3,h4,h5,div,tr,td,table','deny_attribute'=>'* -title -href'); | ||
### Description | ||
|
||
Cette procédure est faite optimiser la conversion document word en html, | ||
spécialement ceux qui sont généré avec beaucoup de «tagsoup» en en simplifier a | ||
sa plus simple expression <abbr>HTML</abbr>. Valide. | ||
|
||
#### Exemple | ||
|
||
##### Avant | ||
|
||
Le HTML a les balises brisées à l'intérieur de chaque balise pour illustrer le | ||
poid et la répétition | ||
|
||
<div lang="en"> | ||
|
||
```html | ||
<h2 | ||
class="Standard" | ||
dir="ltr" | ||
lang="fr-FR" | ||
style="margin-top: 0; margin-bottom: 0; text-align: center;" | ||
xml:lang="fr-FR" | ||
> | ||
<span | ||
lang="en-CA" | ||
style="font-weight: bold; font-size: 16.0px;" | ||
xml:lang="en-CA" | ||
> | ||
TERMS AND CONDITIONS OF 1 | ||
</span> | ||
<span | ||
lang="en-CA" | ||
style="font-weight: bold; font-size: 16.0px;" | ||
xml:lang="en-CA" | ||
>‐</span | ||
> | ||
<span | ||
lang="en-CA" | ||
style="font-weight: bold; font-size: 16.0px;" | ||
xml:lang="en-CA" | ||
> | ||
YEAR OR 30 | ||
</span> | ||
<span | ||
lang="en-CA" | ||
style="font-weight: bold; font-size: 16.0px;" | ||
xml:lang="en-CA" | ||
>‐</span | ||
> | ||
<span | ||
lang="en-CA" | ||
style="font-weight: bold; font-size: 16.0px;" | ||
xml:lang="en-CA" | ||
> | ||
DAY ACCESS AND USE | ||
</span> | ||
</h2> | ||
|
||
<span | ||
lang="en-CA" | ||
style="font-weight: bold; font-size: 16.0px;" | ||
xml:lang="en-CA" | ||
>OF THE SERVICE BY SUBSCRIBERS</span | ||
> | ||
<span | ||
lang="en-CA" | ||
style="font-weight: bold; font-size: 16.0px;" | ||
xml:lang="en-CA" | ||
>SECTION 1</span | ||
> | ||
<span | ||
lang="en-CA" | ||
style="font-weight: bold; font-size: 16.0px;" | ||
xml:lang="en-CA" | ||
> | ||
PURPOSE OF THE SERVICE | ||
</span> | ||
``` | ||
|
||
</div> | ||
|
||
|
||
##### Après | ||
|
||
<div lang="en"> | ||
|
||
```html | ||
<h2>TERMS AND CONDITIONS OF 1 ‐ YEAR OR 30 ‐ DAY ACCESS AND USE</h2> | ||
|
||
<span>OF THE SERVICE BY SUBSCRIBERS SECTION 1 PURPOSE OF THE SERVICE</span> | ||
``` | ||
|
||
</div> | ||
|
||
### Inspiration et pistes | ||
|
||
1. Convertir de format document en ligne de commande De *Microsoft Word 2000* vers du <abbr>HTML</abbr>. | ||
Pour ce faire, j’ai suivi [la documentation d’**<abbr>UNOCONV</abbr>**][unoconv]. | ||
|
||
2. Utiliser open office en mode "headless" (en le transformant en service) et y | ||
envoyer les documents pour conversion. (Renoir de | ||
<time datetime="2024-10">2024</time>: l’article original sur _StackOverflow_ | ||
a été supprimé par l’auteur. Probablement que cette méthode n’est plus | ||
valide.) | ||
|
||
<!--#TODO-inline-edit--> | ||
|
||
### Procédure | ||
|
||
#### Version abstraite | ||
|
||
1. Utiliser Open Office (ou peu importe) pour exporter le document en HTML | ||
|
||
- Purifier via `HTMLTidy` | ||
- Nettoyer les attributs inutiles avec la classe `htmLawed` | ||
|
||
### Use cases | ||
|
||
#### Document texte seulement | ||
|
||
- Pas de formulaire, ni images, etc. | ||
- Idéal pour un document légal, par exemple. | ||
|
||
### Étapes concrètes: | ||
|
||
1. A partir du fichier HTML généré **exemple**: Fichier appelé "`1.1.2.en.html`" | ||
|
||
- Extraire le fichier `htmLawed.zip` ([voir site officiel][htmlawed-home]) | ||
qui contient la classe <abbr>PHP</abbr> que nous allons utiliser. | ||
|
||
```bash | ||
cd ~ | ||
mkdir htmlawed | ||
mv htmLawed.zip htmlawed/ | ||
cd htmlawed | ||
unzip htmLawed.zip | ||
``` | ||
|
||
Passer au travers de la classe `htmLawed` | ||
|
||
```php | ||
require('htmLawed.php'); | ||
$config = array('safe'=>1,'elements'=>'a,em,strong,p,ul,li,ol,h1,h2,h3,h4,h5,div,tr,td,table','deny_attribute'=>'* -title -href'); | ||
$out = htmLawed(file_get_contents('in.html'), $config); | ||
echo $out; | ||
</code></pre> | ||
|
||
<p>Rouler le script. Déplacer le fichier a utiliser, puis exécuter le script pour en générer dans out.html</p> | ||
|
||
<pre><code>cp ~/1.1.2.en.tidy.html in.html | ||
php cleanup.php &gt; out.html</pre> | ||
</code></pre> | ||
|
||
<p>Rouler Tidy. <strong>Normaliser le fichier "1.1.2.en.html", Nettoyer les balises, minuscules, etc</strong></p> | ||
|
||
<pre><code>tidy --drop-font-tags 1 --logical-emphasis 1 --clean 1 --merge-spans 1 --show-body-only 1 --output-xhtml 1 --word-2000 1 --indent "auto" --char-encoding "utf8" --indent-spaces "2" --wrap "90" 1.1.2.en.html &gt; 1.1.2.en.tidy.html | ||
</code></pre> | ||
|
||
<p>tada!</p> | ||
|
||
<h3>Précautions</h3> | ||
|
||
<p>Ordre d'exécution des tâches</p> | ||
|
||
<p><strong>Remarque:</strong></p> | ||
|
||
<p>J'ai essayé de passer Tidy avant htmLawed et j'ai réalisé que le nettoyage de htmLawed est assez drastique et que Tidy rend le code plus propre. Sans oublier que htmLawed peut générer des balises vides que Tidy va éliminer.</p> | ||
|
||
<h3>Références</h3> | ||
|
||
<ol> | ||
<li><a class="external-link" href="http://tidy.sourceforge.net/docs/quickref.html">Options Tidy</a></li> | ||
<li>htmLawed Documentation a PHP Html purification Class | ||
|
||
<ol> | ||
<li><a class="external-link" href="http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/more.htm" rel="nofollow">original documentation</a></li> | ||
<li><a class="external-link" href="http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/example_settings.htm" rel="nofollow">Example settings</a></li> | ||
</ol></li> | ||
</ol> | ||
``` | ||
|
||
Rouler le script. Déplacer le fichier a utiliser, puis exécuter le script pour | ||
en générer dans `out.html` | ||
|
||
```bash | ||
cp ~/1.1.2.en.tidy.html in.html | ||
php cleanup.php > out.html | ||
``` | ||
|
||
Rouler Tidy. **Normaliser le fichier "`1.1.2.en.html`", Nettoyer les balises, | ||
minuscules, etc** | ||
|
||
```bash | ||
tidy \ | ||
--drop-font-tags 1 \ | ||
--logical-emphasis 1 \ | ||
--clean 1 \ | ||
--merge-spans 1 \ | ||
--show-body-only 1 \ | ||
--output-xhtml 1 \ | ||
--word-2000 1 \ | ||
--indent "auto" \ | ||
--char-encoding "utf8" \ | ||
--indent-spaces "2" \ | ||
--wrap "90" \ | ||
1.1.2.en.html > 1.1.2.en.tidy.html | ||
``` | ||
|
||
tada! | ||
|
||
### Précautions | ||
|
||
Ordre d'exécution des tâches | ||
|
||
**Remarque:** | ||
|
||
J'ai essayé de passer Tidy avant htmLawed et j'ai réalisé que le nettoyage de | ||
htmLawed est assez drastique et que Tidy rend le code plus propre. Sans oublier | ||
que htmLawed peut générer des balises vides que Tidy va éliminer. | ||
|
||
### Références | ||
|
||
1. [Options Tidy][tidy-options] | ||
2. htmLawed Documentation a PHP Html purification Class | ||
1. [original documentation][htmlawed-docs] | ||
2. [Example settings][htmlawed-settings] | ||
|
||
[unoconv]: http://dag.wieers.com/home-made/unoconv/#download | ||
[stackoverflow-openoffice]: | ||
http://stackoverflow.com/questions/3405687/openoffice-org-using-uno-to-convert-docx-to-html | ||
[tidy-options]: http://tidy.sourceforge.net/docs/quickref.html | ||
[htmlawed-docs]: | ||
http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/more.htm | ||
[htmlawed-settings]: | ||
http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/example_settings.htm | ||
[htmlawed-home]: | ||
http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/index.php |