Announcement

Collapse
No announcement yet.

RTF -> HTML, WideString -> HTML mit Unicode

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • RTF -> HTML, WideString -> HTML mit Unicode

    Hallo,

    ich habe ein Problem, ich möchte:

    1. RTF nach HTML Konvertieren. Wer kennt da eine gute möglichkeit. Dabei sollen auch verschiedene Sprachen berücksichtigt werden.
    Unter anderem auch Russisch. Die Kompontnnten, die ich bisher gefunden habe funktionieren nicht richtig.

    2. Ich habe Unicode (WideString) Variablen, diese möchte ich in RTF und in HTML umconvertieren. Hierbei wird auch unter anderem Russisch benötigt. Hat jemand schon Routinen gefunden, die das machen, oder eine Komponente. Mir würde es schon reichen, wenn ich eine Umsetzungstabelle hätte z.b. $440 im Unicode ist im RTF Language XYZ mit z.b. /'3e oder so.
    Das selbe benötige ich auch für HTML.

    Schon mal danke an die edlen Helfer.

  • #2
    <a href="http://www.trichview.com/">TRichView</a> sollte das gewünschte können

    Comment


    • #3
      TRichView habe ich schon ausprobiert. Irgendwie bekomme ich bei manchen Dokumenten einen Fehler und er zeigt nichts an. Mit Word lassen diese Dokumente sich aber Problemlos öffnen. Danke für die info

      Comment


      • #4
        TRichView habe ich schon ausprobiert. Irgendwie bekomme ich bei manchen Dokumenten einen Fehler und er zeigt nichts an. Mit Word lassen diese Dokumente sich aber Problemlos öffnen. Desweiteren muß ich die RTFs intern übergeben. Wenn ich ein LoadFromFile mache funktioniert das Laden. Wenn ich aber ein LoadFromStream mache stürzt er bei dem selben Inhalt ab. Mit der Delphi Standart Komponente stürzt er nicht ab, ich denke also das ich mit dem Steam kein fehler mache.
        Danke für die info

        Comment


        • #5
          Das hatte ich mir mal vor einer Weile gebastelt:<p>
          <pre>FUNCTION ConvertCharsToHTML(Value: WideString): WideString;
          var CountTag, i: integer;
          BEGIN
          Result := '';
          CountTag := 0;
          FOR i := 1 To Length(Value) DO
          BEGIN
          CASE Ord(Value[i]) OF
          60 : Inc(CountTag);
          62 : Dec(CountTag);
          END;
          IF CountTag > 0
          THEN Result := Result + Value[i]
          ELSE
          CASE Ord(Value[i]) OF
          34 : Result := Result + '&amp;quot;';
          38 : Result := Result + '&amp;amp;';
          160: Result := Result + '&amp;nbsp;';
          161: Result := Result + '&amp;iexcl;';
          162: Result := Result + '&amp;cent;';
          163: Result := Result + '&amp;pound;';
          164: Result := Result + '&amp;curren;';
          165: Result := Result + '&amp;yen;';
          166: Result := Result + '&amp;brvbar;';
          167: Result := Result + '&amp;sect;';
          168: Result := Result + '&amp;uml;';
          169: Result := Result + '&amp;copy;';
          170: Result := Result + '&amp;ordf;';
          171: Result := Result + '&amp;laquo;';
          172: Result := Result + '&amp;not;';
          173: Result := Result + '&amp;shy;';
          174: Result := Result + '&amp;reg;';
          175: Result := Result + '&amp;macr;';
          176: Result := Result + '&amp;deg;';
          177: Result := Result + '&amp;plusmn;';
          178: Result := Result + '&amp;sup2;';
          179: Result := Result + '&amp;sup3;';
          180: Result := Result + '&amp;acute;';
          181: Result := Result + '&amp;micro;';
          182: Result := Result + '&amp;para;';
          183: Result := Result + '&amp;middot;';
          184: Result := Result + '&amp;cedil;';
          185: Result := Result + '&amp;sup1;';
          186: Result := Result + '&amp;ordm;';
          187: Result := Result + '&amp;raquo;';
          188: Result := Result + '&amp;frac14;';
          189: Result := Result + '&amp;frac12;';
          190: Result := Result + '&amp;frac34;';
          191: Result := Result + '&amp;iquest;';
          192: Result := Result + '&amp;Agrave;';
          193: Result := Result + '&amp;Aacute;';
          194: Result := Result + '&amp;Acirc;';
          195: Result := Result + '&amp;Atilde;';
          196: Result := Result + '&amp;Auml;';
          197: Result := Result + '&amp;Aring;';
          198: Result := Result + '&amp;AElig;';
          199: Result := Result + '&amp;Ccedil;';
          200: Result := Result + '&amp;Egrave;';
          201: Result := Result + '&amp;Eacute;';
          202: Result := Result + '&amp;Ecirc;';
          203: Result := Result + '&amp;Euml;';
          204: Result := Result + '&amp;Igrave;';
          205: Result := Result + '&amp;Iacute;';
          206: Result := Result + '&amp;Icirc;';
          207: Result := Result + '&amp;Iuml;';
          208: Result := Result + '&amp;ETH;';
          209: Result := Result + '&amp;Ntilde;';
          210: Result := Result + '&amp;Ograve;';
          211: Result := Result + '&amp;Oacute;';
          212: Result := Result + '&amp;Ocirc;';
          213: Result := Result + '&amp;Otilde;';
          214: Result := Result + '&amp;Ouml;';
          215: Result := Result + '&amp;times;';
          216: Result := Result + '&amp;Oslash;';
          217: Result := Result + '&amp;Ugrave;';
          218: Result := Result + '&amp;Uacute;';
          219: Result := Result + '&amp;Ucirc;';
          220: Result := Result + '&amp;Uuml;';
          221: Result := Result + '&amp;Yacute;';
          222: Result := Result + '&amp;THORN;';
          223: Result := Result + '&amp;szlig;';
          224: Result := Result + '&amp;agrave;';
          225: Result := Result + '&amp;aacute;';
          226: Result := Result + '&amp;acirc;';
          227: Result := Result + '&amp;atilde;';
          228: Result := Result + '&amp;auml;';
          229: Result := Result + '&amp;aring;';
          230: Result := Result + '&amp;aelig;';
          231: Result := Result + '&amp;ccedil;';
          232: Result := Result + '&amp;egrave;';
          233: Result := Result + '&amp;eacute;';
          234: Result := Result + '&amp;ecirc;';
          235: Result := Result + '&amp;euml;';
          236: Result := Result + '&amp;igrave;';
          237: Result := Result + '&amp;iacute;';
          238: Result := Result + '&amp;icirc;';
          239: Result := Result + '&amp;iuml;';
          240: Result := Result + '&amp;eth;';
          241: Result := Result + '&amp;ntilde;';
          242: Result := Result + '&amp;ograve;';
          243: Result := Result + '&amp;oacute;';
          244: Result := Result + '&amp;ocirc;';
          245: Result := Result + '&amp;otilde;';
          246: Result := Result + '&amp;ouml;';
          247: Result := Result + '&amp;divide;';
          248: Result := Result + '&amp;oslash;';
          249: Result := Result + '&amp;ugrave;';
          250: Result := Result + '&amp;uacute;';
          251: Result := Result + '&amp;ucirc;';
          252: Result := Result + '&amp;uuml;';
          253: Result := Result + '&amp;yacute;';
          254: Result := Result + '&amp;thorn;';
          255: Result := Result + '&amp;yuml;';
          ELSE if Ord(Value[i]) <= 255
          then Result := Result + Value[i]
          else Result := Result + '&amp;#' + IntToStr(Ord(Value[i]));
          END; // CASE
          END; // IF
          END;</pre><p>
          berücksichtigt UniCode und Tags.<p>
          Schöne Grüße, Mario Noac
          Schöne Grüße, Mario

          Comment


          • #6
            Hallo, ist zwar nicht alles was ich brauche, ist aber schon mal ein Anfang. Danke

            Comment


            • #7
              @Mario,

              du kannst Deine Funktion abkürzen, indem Du alle Sonderzeichen wie in deinem Else-Zweig behandelst.

              @Shadows,

              hast Du schon mal beim Hersteller von TRichView nachgefragt. RTF ist ja nur ein halbwegs von MS definiertes und beschriebenes Format, so das hier evtl. noch ein paar Sonderfälle nicht berücksichtigt werden

              Comment


              • #8
                Aber dann wird zum Beispiel die 34 im Klartext übernommen, und das wäre wirklich OK
                Schöne Grüße, Mario

                Comment


                • #9
                  Hallo,<br>
                  es gib eine Unit 'unicode' von:<br>
                  Mike Lischke ([email protected]).<br>
                  Damit habe ich gute Erfahrung gemacht.

                  Gruß<br>
                  Hors

                  Comment


                  • #10
                    @Mario,

                    äh, ich meine natürlich du könntest alles mittels
                    <pre> Result + '&#' + IntToStr(Ord(Value[i]));</pre>
                    Codieren - etwas zu schnell über den Code gelesen

                    Comment


                    • #11
                      Bei TRichView kann ich irgendwie keinen Stream benutzen. Er stürzt immer ab. Wenn ich den Stream aber in eine Andere Komponente schicke ist er OK. Und jedes mal den Text auf Festplatte zwischenspeichern ist auch nicht so das wahre

                      Comment


                      • #12
                        Hast Du schon mal den Hersteller gefragt (Haben ein Newsgroup-Server)?
                        Ich kann mir nicht vorstellen, das sowas nicht gehen sollte

                        Comment

                        Working...
                        X