html2xml
by toubia95
HTML
<p>
Coller un text converti en html avec libreoffice.
</p><div>
<textarea id="area1"></textarea>
</div>
<br>
<a href="#" id="convertir">Convertir »</a>
<br>
<br>
<div>
<textarea id="area2"></textarea>
</div>
<br>
<a href="#" id="renum">Remonter les numéros de pages (+1) »</a>
<br>
CSS
/* --- TODO ---
* - remonter les césures
*/
body {
text-align: center;
}
textarea {
width: 95%;
height: 150px;
}
#convertir {
margin: 100 0;
}
JavaScript
// https://regexr.com/
$( "#convertir" ).click(function() {
$("#area2").val('');
var myHtml = $("#area1").val();
// Conserver uniquement le contenu de <body>
myHtml = myHtml.replace(/<!DOCTYPE(.|\n)*?<\/head>/gi,"");
// Enlever tous les attributs des balises
myHtml = myHtml.replace(/<\s*(\w+).*?>/gi, "<$1>");
// Enlever les balises inutiles
myHtml = myHtml.replace(/<(|\/)(html|font|span|b|img|div|body)>/gi,"");
// Supprimer les caractères invisibles inutiles
myHtml = myHtml.replace(/\t/gi,"");
myHtml = myHtml.replace(/([^>])\n/gi,"$1 ");
// Réencoder les accents
myHtml = decodeHtml(myHtml);
// Codage en xml
myHtml = myHtml.replace(/<br>/gi,"<lb/>");
myHtml = myHtml.replace(/<i>/gi,'<hi rend="I">');
myHtml = myHtml.replace(/<\/i>/gi,"</hi>");
myHtml = myHtml.replace(/<p>(\d{1,4})<\/p>/gi,'<pb n="$1">');
// Toilettage
myHtml = myHtml.replace(/<p>[\s\n\r]+<\/p>/gi,'<lb/>');
myHtml = myHtml.replace(/(\n)(<p>)/gi,"$1 $2");
myHtml = myHtml.replace(/ /gi," ");
myHtml = myHtml.replace(/<p>\n/gi,"<p>");
myHtml = myHtml.replace(/([^.;])<\/p>(\n<pb n="(\d{1,4})">\n) <p>/gi,"$1<lb/>$2");
myHtml = myHtml.replace(/<\/hi><hi rend="I">/gi,"");
myHtml = myHtml.replace(/([. ]+)<\/hi>/gi,"</hi>$1");
myHtml = myHtml.replace(/\n<\/hi>/gi,"</hi>");
/*
* <p>[A-ZÀÁÂÄÆÇÈÉÊËÌÍÎÏÒÓÔÖÙÚÛÜŒ ]+<\/p> => <head>
* intégrer .,' et <lb/>
*/
$("#area2").val(myHtml);
});
function decodeHtml(html) {
var txt = document.createElement("textarea");
txt.innerHTML = html;
return txt.value;
}
/*
$( "#renum" ).click(function() {
$( "#renum" ).hide();
var myNum = $("#area2").val();
myNum = myNum.replace(/<pb n="(\d{1,4})">/gi, remplaceur);
$("#area2").val(myNum);
});
function remplaceur(match, p1, offset, string){
var tempNum = parseInt(p1) + 1;
return '<pb n="'+tempNum+'">';
}
*/
$( "#renum" ).click(function() {
$( "#renum" ).hide();
var myNum = $("#area2").val();
myNum =...