WPF Webbrowser crée un fichier HTML à partir d’une entrée utilisateur

Je lis un code HTML à l’aide du composant Webbrowser de WPF. Je devrais laisser l’ user to give there own text, upload an image and save it as a .html file .

De cette façon, je peux obtenir la valeur du tag:

  ssortingng myTagValue = (FrameWithinGrid.Document as mshtml.HTMLDocument) .getElementsByTagName("div") .OfType() .First() .innerText; 

Comment puis-je get the value from a text box and save it as a .html file incluant une nouvelle image?

Besoin de votre aide. Je vous remercie.

C’est le fichier html:

      Welcome to Linguini Party!  * { margin: 0; } html, body { height: 100%; font-family: Arial; background-color: #e1dfe3; color: #333333; background-repeat: no-repeat; } h1 { margin-right: 8%; margin-left: 7%; font-size: 450%; text-align: center; } h2 { font-size: 450%; text-align: center; color: #8a00ca; font-style: italic; }    

Welcome to

Linguini Party!

Une stratégie pour y parvenir consiste à créer un modèle html inspiré de celui-ci …

        

$$TEXT1$$

$$TEXT2$$

Ce modèle a été instrumenté avec des marqueurs tels que $$ TEXT1 $$. Ceux-ci seront remplacés par un texte personnalisé ultérieurement.

Incluez le modèle en tant que ressource, ou en tant que fichier externe ou ailleurs. J’opte pour l’inclure en tant que ressource intégrée. Voici les parameters …

entrez la description de l'image ici

Vous n’avez PAS à utiliser une ressource incorporée, vous pouvez également utiliser WebBrowser pour obtenir le code HTML. J’aime utiliser une ressource car elle évite les exceptions causées par des fichiers manquants ou corrompus.

La prochaine étape est facile. Voici un modèle de vue fonctionnel …

 public class ViewModel { public ssortingng Text1 { get; set; } public ssortingng Text2 { get; set; } public ssortingng ImagePath { get; set; } public ssortingng DestinationName { get; set; } public void Start() { var resourceName = Assembly.GetExecutingAssembly().GetManifestResourceNames().Where(q => q.Contains("Template.html")).FirstOrDefault(); using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) { using (StreamReader reader = new StreamReader(stream)) { ssortingng html = reader.ReadToEnd().Replace("$$TEXT1$$", Text1).Replace("$$TEXT2$$", Text2).Replace("http://soffr.miximages.com/c%23/$$IMAGELOCATION$$", ImagePath); File.WriteAllText(DestinationName, html); } } } } 

Le modèle de vue obtient les différentes propriétés Text1 (etc.) définies par l’appelant, puis charge le modèle HTML et remplace les marqueurs par un contenu personnalisé. Ensuite, il utilise la méthode statique sur Fichier pour l’enregistrer.

Vous pouvez modifier cette stratégie pour utiliser tout autre type d’instrumentation, à condition qu’elle soit cohérente. Pour une solution complète plus évolutive, je suggère HtmlAgility . Je l’utilise depuis des années.