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 html. Valide.
Sauter à la Procédure
Exemple
Avant
<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>
Après
<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>
Inspiration et pistes
- Convertir de format document en ligne de commandeDe Word2000 vers HTML, voir UNOCONV http://dag.wieers.com/home-made/unoconv/#download
- Utiliser open office en mode “headless” (en le transformant en service) et y envoyer les documents pour conversionVoir: http://stackoverflow.com/questions/3405687/openoffice-org-using-uno-to-convert-docx-to-html
Procédure
Version abstraite
- 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:
- A partir du fichier HTML généré exemple: Fichier appelé “1.1.2.en.html”
* Extraire le fichier htmLawed.zip
cd ~
mkdir htmlawed
mv htmLawed.zip htmlawed/
cd htmlawed
unzip htmLawed.zip
Passer au travers de la classe htmLawed
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;
Rouler le script. Déplacer le fichier a utiliser, puis exécuter le script pour en générer dans out.html
cp ~/1.1.2.en.tidy.html in.html
php cleanup.php > out.html</pre>
Rouler Tidy. Normaliser le fichier “1.1.2.en.html”, Nettoyer les balises, minuscules, etc
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
- Options Tidy
- htmLawed Documentation a PHP Html purification Class