Convertir du HTML en texte brut avec MSHTML
Il arrive souvent qu’on récupère du contenu HTML (API, fichiers, Etc…) et qu’on souhaite en extraire uniquement le texte lisible.
Delphi permet de le faire très simplement grâce à MSHTML, le moteur d’Internet Explorer encore disponible dans Windows.
Voici une fonction compacte qui transforme du HTML en texte brut :
uses
Windows, SysUtils, MSHTML, ActiveX, ComObj;
function HTMLToPlainText(const HTML: string): string;
var
Doc: IHTMLDocument2;
v: OleVariant;
begin
// Initialiser COM si ce n’est pas déjà fait
CoInitialize(nil);
try
// Créer une instance du document HTML
Doc := CreateComObject(CLASS_HTMLDocument) as IHTMLDocument2;
// Injecter le HTML dans le document
v := HTML;
Doc.write(v);
Doc.close;
// Extraire le texte brut du corps
Result := Doc.body.innerText;
finally
CoUninitialize;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
HTML, TexteBrut: string;
begin
HTML := '<html><body><h1>Bonjour</h1><p>Ceci est <b>un test</b>.</p></body></html>';
TexteBrut := HTMLToPlainText(HTML);
ShowMessage(TexteBrut); // Affiche : Bonjour Ceci est un test.
end;Un petit clic (J'aime) qui fait plaisir !