11
votes

C # .NET Convertir HTML en RTF

Theres Un autre message à Convertisseur HTML to RTF pour .NET , mais Y a-t-il des convertisseurs ou des tutoriels open source? Je ne veux pas utiliser Sautininsoft . Je pense qu'il y a une solution à ExpertSExchange, mais je dois payer pour cela. La plupart des résultats de la recherche sur Google Pointez sur un convertisseur RTF au HTML, mais pas un convertisseur HTML sur RTF.


0 commentaires

4 Réponses :


4
votes

L'article ExpertSExchange est un pauvre au mieux. Fondamentalement, l'OP a abandonné parce qu'ils ne pouvaient pas donner une bonne réponse. Ils répertorient un lien vers l'article de codeProject ( http://www.codeproject.com/kb/ HTML / XHTML2RTF.ASPX ) qui vous indique comment convertir HTML en RTF, mais ce n'est pas vraiment une solution .NET. Au lieu de cela, ce serait quelque chose qui devrait être hautement adapté.

De mon expérience, il n'y a pas un bon convertisseur open source. Les morceaux semblent tous être là, mais il attend que quelqu'un fasse les devoirs de la mise en place ensemble. Cependant, la réponse immédiate à votre question est qu'il n'y a pas de convertisseur déjà là-bas.


2 commentaires

Je viens de traverser cette expérience d'apprentissage et j'ai choisi d'utiliser Perl qui a une bonne éteinte, OSS, Solution. (HTML :: FormatF)


@Jason D - Bon à savoir.



20
votes

Créer un WebBrowser. Chargez-le avec le contenu HTML. Sélectionnez tout et copiez-en. Coller dans une richtextbox. Ensuite, vous avez le RTF

string html = "...."; // html content
RichTextBox rtbTemp = new RichTextBox();
WebBrowser wb = new WebBrowser();
wb.Navigate("about:blank");

wb.Document.Write(html);
wb.Document.ExecCommand("SelectAll", false, null);
wb.Document.ExecCommand("Copy", false, null);

rtbTemp.SelectAll();
rtbTemp.Paste();


6 commentaires

@frenchone Pour ceux-ci, vous pouvez utiliser le mot Interop, simuler la pâte dans un document Word, puis copier et coller dans une richtextbox, puis obtenir le RTF.


Merci pour votre commentaire mais nous essayons de supprimer notre dépendance "MS Office". Votre solution avait l'air simple, même si elle nécessite une référence WinForm (tandis que notre projet est un inconvénient). Dommage, il n'y a pas de système dédié.dll pour faire la conversion. Et que RichTextBox ne se comporte pas comme WordPad qui obtient la conversion.


@frenchone Les hyperliens et les tables seront meilleurs au mieux si vous utilisez RichtextBox V5, au lieu de la valeur par défaut à VS qui est 4. Mais cela ne résoudra pas le problème avec des images.


C'est une réponse très utile


Ceci est intelligent. Très maladroit, mais toujours intelligent! Pas sûr qu'il serait à l'échelle ...


Cela ne fonctionne pas du tout.



12
votes

tl; dr: Je recommande d'utiliser le format openxml et le fichier htmltoopenxml Nuget si possible.


Microsoft Word Com

Je n'ai pas vraiment beaucoup cherché à ce sujet en tant que cas d'utilisation consiste à utiliser la fonctionnalité sur un serveur qui rend les composants COM.


xhtml2rtf

comme @IAMtimCorey mentionné Vous pouvez utiliser cette bibliothèque de codeProject.

Inconvénients sont:

  • HTML et CSS prises en charge limitées
  • Pas vraiment .NET
  • ...

    Windows forme web navigateur Web

    comme @jerry mentionné Vous pouvez utiliser les formulaires Windows Forms WebBrowser Control.

    Les inconvénients sont:

    • Référence à System.Windows.Forms
    • utilise la copie et la pâte (problématique pour multithreading)
    • ne fonctionne que dans un thread STA

      Les fonctionnalités non prises en charge incluent:

      • Polices
      • couleurs
      • Listes numérotées
      • StrikethRough ( del élément)
      • ...

        DevExpress

        échantillon de code de "Paul V" à partir de Centre de support de DevExpress . (03.02.2015) xxx

        ou vous pouvez utiliser le type richeditdocumentserver comme indiqué dans Cet exemple .

        • A La licence pour DevExpress peut coûter d'environ 1500.- USD à 2200.- USD.

          inconnu Qu'est-ce qui est effectivement pris en charge.

          Les inconvénients sont les suivants:

          • Prix
          • Beaucoup de références pour une petite chose
          • plus?

            Les fonctionnalités non prises en charge incluent:

            • Strikethough ( del élément)

              SautinIsoft xxx

              Plusieurs exemples et options de configuration peuvent être trouvés ici et ICI


0 commentaires

2
votes

Il semble y avoir une nouvelle solution OpenSource basée sur une WPF RichTextBox. La seule mise en garde ne prend que dans le noyau ne prend en charge que des applications stéhalées et pour être utilisée dans un I.e. ASP.NET, vous devez l'appeler dans une stations (mais il existe un échantillon pour cela dans l'écriture).

Pour une utilisation dans les add-ins VSTO, cela est confirmé à fonctionner (c.-à-d. Outlook RTFbody)

Nuget: https://www.nuget.org/packages/markupconverter/

Projet: https://github.com/figuemon/markupconverter

ÉCRIPTION: https://code.msdn.microsoft.com/converting-between- RTF-and-AAA02A6E


1 commentaires

J'utilisais Markupconverter qui fonctionne bien, mais il a eu des effets étranges sur mon application lorsque les écrans de l'utilisateur ont été définis sur une échelle de quelque chose de plus grand que 100%. Jusqu'à présent, cela fonctionne pour moi, bon travail!