locked
Silverlight Text Editor Sample は html への出力が出来るのでしょうか? RRS feed

すべての返信

  • こんにちは。

    単純なメソッドでHTMLへ保存する事はできないですが、Documentプロパティを読みながらHTMLへ変換して保存することはできると思います。

    もしくは、出力されるxaml形式を適当に変換(Replaceとか)してもできるんじゃないでしょうか。HTML要素とか足りないものは付け加える必要ありますが。

    結果として出力されるxaml(というかRichtextboxのdocumentのFlowObjectが)が、<run> - </run>の集合という単純な構造なので、これは、HTMLでいうと<span>-</span>の集合に相当するって考えれば良いのではと思うのです。

    2012年4月5日 1:28
  • Keiichi Oumi さん、情報有り難うございます。


    どこかで「置換しろ」という投稿を見たような気がします。

    そうですかぁ、ズバリな方法はなく、手軽にもできないのですね。

    xaml の確認が必要ですので、まずはそこから。
    2012年4月5日 2:19
  • サンプルの xaml は以下の通りです。


    <Section ...>
    	<Paragraph ...>
    		<Run ...>Lorem ipsum</Run>
    		<Run></Run>
    		<Run ...> dolor sit amet, ...</Run>
    		<Run></Run>
    		<Run ...>Morbi imperdiet</Run>
    		<Run></Run>
    		<Run ...>, neque et ...</Run>
    		<Run></Run>
    		<Run >Quisque congue ...</Run>
    		<Run></Run>
    		<Run ...> </Run>
    		<Run></Run>
    		<Run ...>Suspendisse</Run>
    		<Run></Run>
    		<Run ...> porttitor pretium ...</Run>
    		<Run></Run>
    		<Run ...>id faucibus turpis ...</Run>
    		<Run></Run>
    	</Paragraph>
    	<Paragraph .../>
    	<Paragraph ...>
    		<Run ...>Praesent sit amet odio ipsum,</Run>
    		<Run></Run>
    		<Run ...> non fermentum ...</Run>
    		<Run></Run>
    		<Run ...>Nulla facilisi.</Run>
    		<Run></Run>
    		<Run ...> Phasellus condimentum, ...</Run>
    		<Run></Run>
    		<Run ...>Morbi ut eros</Run>
    		<Run></Run>
    		<Run ...> in lectus vehicula euismod.</Run>
    		<Run></Run>
    	</Paragraph>
    </Section>


    さて、どうしよう。
    Toolkit として出して欲しいけど。
    • 編集済み custar 2012年4月5日 2:35
    2012年4月5日 2:33
  • こんにちは。

    ちょっといい加減ですが、簡単にできないこともないようで・・・

    アトリビュートの数が問題かなぁ・・・

       Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click

            Dim xE As XElement = XElement.Load("/SilverlightApplication1;component/sample.xaml")
            Dim s = ChanegRtf2Html(xE)

        End Sub


        Private Function ChanegRtf2Html(xE As XElement) As String

            Dim _html As String = ""
            _html &= "<html>" & vbCrLf
            _html &= "<title></title>" & vbCrLf
            _html &= "<body>" & vbCrLf


            If xE.HasElements Then

                For Each pE In xE.Elements
                    _html &= GetDiv(pE)
                Next

            End If

            _html &= "</body>" & vbCrLf
            _html &= "</html>" & vbCrLf

            Return _html

        End Function

        Private Function GetDiv(e As XElement) As String

            Dim _div As String = ""

            _div &= "<div id="""
            _div &= e.Name.LocalName
            _div &= """ Style="""

            For Each at In e.Attributes

                Dim _at As String = ""
                Select Case at.Name.ToString
                    Case "FontSize"
                        _at = "font-size:" & at.Value & ";"
                    Case "FontFamily"
                        _at = "font-family:" & at.Value & ";"
                    Case "Foreground"
                        _at = "color:#" & at.Value.Substring(3) & ";"
                    Case "FontWeight"
                        _at = "font-weight:" & at.Value & ";"
                    Case "FontStyle"
                        _at = "font-style" & at.Value & ";"
                    Case "FontStretch"

                    Case "TextAlignment"
                        _at = "text-align:" & at.Value & ";"
                End Select

                _div &= _at

            Next

            _div &= """>" & vbCrLf

            _div &= e.LastAttribute.Value


            If e.HasElements Then

                For Each pE In e.Elements
                    _div &= GetDiv(pE)
                Next

            End If

            _div &= "</div>" & vbCrLf

            Return _div
        End Function


    2012年4月5日 5:46
  • プログラム コードで置換というのもあるのでしょうが、
    xml から html への変換ということであれば、私がすぐに思いつくのは XSLT です。

    - XSLT - Transformation


    これをどうやって xaml にも適用できるか現在分かりませんが。


    - How to Convert XML Files to HTML
    - SEO for Silverlight
    - XSLを使ったファイル変換(XAML<->SVG)
    - XSLT support


    1. xaml のまま Datastore に保管しておき
    2. 編集には xaml を使い
    3. 表示には web server で xaml を xslt で html に変換して出力

    となるかなと想像しています。


    - Silverlight RichTextBox: Integrating A Control That Does Not Have a Dependency Property In LightSwitch

    • 編集済み custar 2012年4月6日 4:37
    2012年4月6日 4:15
  • こんにちは。

    MVCではうまいことできましたが、Silverlight下だとどうなんでしょう。

    ここが参考になりませんか?

    2012年4月9日 0:34
  • Keiichi Oumi さん、アドバイス有り難うございます。


    XslCompiledTransform は、
    上記リストの『XSLを使ったファイル変換(XAML<->SVG)』で使われていますね。

    また、以下でも出てきます。

    - Silverlight SEO


    多分出来るんだろうなぁ、と予想しています。
    Screen に WebPage を表示できることも確認しました。
    • 編集済み custar 2012年4月9日 9:11
    2012年4月9日 4:32