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) pour les ententes collectives et l’engin de recherche des documents pour les membres. L’autre partie que j’ai été impliquée pour l'UDA était notamment l’écriture et l’architecture du HTML et le styling CSS pour l’ensemble du site.

La maquette de travail («styleguide») est disponible ici

Comment je valide et convertit des documents HTML trop chargés ou provenant de Microsoft Word en HTML valide et simplifié

Tags

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.

Exemple

Avant

Le HTML a les balises brisées à l'intérieur de chaque balise pour illustrer le poid et la répétition

<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

  1. Convertir de format document en ligne de commande De Microsoft Word 2000 vers du HTML. Pour ce faire, j’ai suivi la documentation d’UNOCONV.

  2. Utiliser open office en mode "headless" (en le transformant en service) et y envoyer les documents pour conversion. (Renoir de : l’article original sur StackOverflow a été supprimé par l’auteur. Probablement que cette méthode n’est plus valide.)

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) qui contient la classe PHP que nous allons utiliser.
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

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

  1. Options Tidy
  2. htmLawed Documentation a PHP Html purification Class
    1. original documentation
    2. Example settings