5

RTF から HTML へのサイトの投稿や、HTML から RTF へのコンバーターについて話している他の投稿をすでにたくさん見てきましたが、最も広く使用されている商用製品と見なされているものの完全な内訳を得ようとしています。ソース製品または自家栽培を推奨する場合。これが重複した質問だと思われる場合は申し訳ありませんが、私たちのアプリケーションにとって何が最も実行可能かを確認するために製品マトリックスを作成しようとしています. また、これは他の人にも役立つと思います。

コンバーターは、DB として SQLServer 2005 (まもなく 2008 年) を使用する ASP.NET 2.0 アプリケーション (まもなく 3.5 にアップグレードしますが、まだ WebForms を使い続けます) で使用されます。

いくつかの投稿を読むと、SautinSoftは商用コンポーネントとして人気があるようです。HTML を RTF に変換するために推奨する他の商用コンポーネントはありますか? 価格は問題ありませんが、多少高くても出品してください。

オープン ソースについては、ファイルを変換できるようにOpenOffice.orgをサービスとして実行できることを読みました。ただし、これは Java ベースのみのようです。これを使用するには、ある種の相互運用が必要だと思いますか?HTML を RTF に変換するための .NET オープン ソース コンポーネントはありますか?

自家栽培の場合、XHTML を使用する方法として XSLT はありますか? もしそうなら、XHTML を生成するためにどのコンポーネントをお勧めしますか? それ以外の場合は、他にどのような自家栽培の道をお勧めしますか.

また、現在のところ、RTF から HTML への変換についてはあまり気にしていないことに注意してください。商用コンポーネントがこれを提供し、価格が同じであれば問題ありませんが、それ以外の場合は言及しないでください。

4

4 に答える 4

1

その価値のために、特定の順序ではありません。

少し前に、RTF にエクスポートしてから、MS Word で操作されている問題の RTF を RTF からインポートしたいと考えていました。

最初の問題は、RTF がオープン スタンダードではないことです。これは MS の内部標準であるため、彼らは好きなときに変更し、一般的に互換性について心配していません。現在、RTF のバージョンは 1.3 から 1.9 で、すべて異なります。内部的には、適切な測定のために twip を測定に使用します。

私はこのテーマに関する O'Reilly のポケット ブックを購入しました。これは MS のドキュメントを読むのに役立ちました。これは優れたものですが、バージョンごとにたくさんあります。

正規表現を使用して RTF をコーディングする方法は、信じられないほど大変な作業であり、テストして作業を開始するには、注意深い取り扱いと集中力が必要です。正規表現が組み込まれた Mac エディターを使用して、各セクションを着実にテストし、コードに組み込むことができました。

バージョンの数が多いため、バージョン間には多くの非互換性もありますが、多くの共通点があり、最終的には、必要な場所に到達するのがかなり困難/簡単でした (約 1 週間の読み取りと 2 週間のコーディングの後) および生成本当に簡単なバージョン。

私は商用ソリューションを見つけたことがありませんでしたが、予算のために無料で利用する必要があったため、多くのことを削減しましたが、希望どおりに機能し、サポートがあることを確認するために、1 つを選択する際には細心の注意を払ってください.

HTML/XML/XHTML のどこから来たのかわかりません。CSV 形式を RTF に変換していました。

DIYにするか購入するか迷っています。おそらくDIYのバランスですが、あなた自身の状況がそれを決定します.

編集: コンテンツから RTF への移行は、その逆よりも簡単です。

ところで、RTF バージョンよりも MS を批判しているわけではありません。

于 2010-01-13T18:28:17.750 に答える
0

HTML から RTF へのコンバーターであるCute Editor for .NETも備えた Web 用の WYSIWYG リッチ テキスト エディター (RTE) を見つけました。誰もこのコンポーネントの経験がありますか? Web ベースの RTE に関する私の主な経験は CKEditor (fckEditor) と TinyMCE でしたが、私が知る限り、CKEditor と TinyMCE には HTML から RTF へのコンバーターが組み込まれていません。

于 2010-01-11T17:34:09.517 に答える
0

Web アプリケーションにリッチテキスト形式の差し込み印刷機能を実装する必要があるので、私の経験を共有できればと思います。

基本的に、私は 2 つの選択肢を検討しました。

  • Google Docs API を使用して Google Docs 機能を活用する
  • このエッセイで示されているように、XSLT を使用する

Google Docs API はうまく機能します。問題は、次のように改ページのある HTML ドキュメントをアップロードする場合です。

<p style="page-break-before:always;display:none;"/>

Google にドキュメントを RTF に変換するように依頼すると、すべての改行が失われ、私の要件に適合しません。ただし、改ページが問題にならない場合は、この解決策を確認してください。

XSLT ソリューションは機能します。

System.Xml クラスをバイパスして、MSXML3 COM オブジェクトを直接参照すると機能します。そうでなければ、私はそれを機能させることができませんでした。さらに、テキストの色やサイズなどを無視して、基本的な書式設定とタグを除いてすべてを尊重しているようです。ただし、改ページは尊重されます。:-)

これは、tidy.net を使用して HTML から XHTML への変換を強制する、私が作成した簡単なライブラリです。それが役に立てば幸い。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ADDS.Mailmerge
{

    public class XHTML2RTF
    {

        MSXML2.FreeThreadedDOMDocument _xslDoc;
        MSXML2.FreeThreadedDOMDocument _xmlDoc;
        MSXML2.IXSLProcessor _xslProcessor;
        MSXML2.XSLTemplate _xslTemplate;
        static XHTML2RTF instance = null;
        static readonly object padlock = new object();

        XHTML2RTF()
        {
            _xslDoc = new MSXML2.FreeThreadedDOMDocument();
            //XSLData.xhtml2rtf is a resource file 
            // containing XSL for transformation
            // I got XSL from here: 
            // http://www.codeproject.com/KB/HTML/XHTML2RTF.aspx
            _xslDoc.loadXML(XSLData.xhtml2rtf);
            _xmlDoc = new MSXML2.FreeThreadedDOMDocument();
            _xslTemplate = new MSXML2.XSLTemplate();
            _xslTemplate.stylesheet = _xslDoc;
            _xslProcessor = _xslTemplate.createProcessor();
        }

        public string ConvertToRTF(string xhtmlData)
        {
            try
            {
                string sXhtml = "";
                TidyNet.Tidy tidy = new TidyNet.Tidy();
                tidy.Options.XmlOut = true;
                tidy.Options.Xhtml = true;
                using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(xhtmlData)))
                {
                    StringBuilder sb = new StringBuilder();
                    using (MemoryStream sw = new MemoryStream())
                    {
                        TidyNet.TidyMessageCollection messages = new TidyNet.TidyMessageCollection();
                        tidy.Parse(ms, sw, messages);
                        sXhtml = Encoding.UTF8.GetString(sw.ToArray());
                    }
                }

                _xmlDoc.loadXML(sXhtml);
                _xslProcessor.input = _xmlDoc;
                _xslProcessor.transform();
                return _xslProcessor.output.ToString();
            }
            catch (Exception exc)
            {
                throw new Exception("Error in xhtml conversion. ", exc);
            }
        }

        public static XHTML2RTF Instance
        {
            get
            {
                lock (padlock)
                {
                    if (instance == null)
                    {
                        instance = new XHTML2RTF();
                    }
                    return instance;
                }
            }
        }
    }



}
于 2011-11-09T13:52:07.027 に答える
0

タスクはそれほど複雑ではないので、自分で行うことをお勧めします。まず、ある Xml 形式を別の Xml 形式に変換する最も簡単な方法は、Xslt を使用することです。C# で Xml ドキュメントを変換するのは非常に簡単です。

これは、開始するための優れた msdn ブログ投稿です。マイクは、サードパーティに対処するよりも手動でこれを行う方が簡単だったとさえ述べています.

リンク

実は、私はすでにこの質問に答えましたここ. これが重複していると思います。

于 2010-01-13T15:35:36.173 に答える