2010-07-09 12 views
5

Ich muss RTF in Nur-Text konvertieren. Ich habe eine Funktion geschrieben, die RTF-Header entfernt, aber es ist nie perfekt.Delphi: beste Möglichkeit, RTF in Text zu konvertieren

Also eine Option kann die Verwendung eines TRichEdit zur Laufzeit erstellt (etwas wie beschrieben here aber natürlich zur Laufzeit getan). Aber gibt es einen anderen Weg? Gibt es eine rtl-Funktion für diesen oder einen besseren Ansatz?

UPDATE:

In this question ich die letzte Version meiner rtf in Text Verfahren schrieb.

+0

Was ist los mit TRichEdit? Und wer generiert das RTF, das du konvertieren willst? Wenn Sie hoffen, RTF aus Microsoft Word zu konvertieren, könnte die von Microsoft stammende TRichEdit die beste Option sein. –

+2

@Cosmin Prund: Es könnte ein bisschen Overkill sein, ein GUI-Steuerelement zu erstellen (auch wenn es nie auf dem Bildschirm angezeigt wird), nur um eine Dateikonvertierung im Hintergrund durchzuführen. Aber natürlich funktioniert es. –

+1

Genau, das war meine Sorge. Natürlich funktioniert es. Jedenfalls scheint es so zu sein. – LaBracca

Antwort

3

Wenn Sie wirklich einen Weg finden wollen, diese Konvertierung durchzuführen, sollten Sie sich ansehen, wie die Klasse TConversion in der Klasse TRichEditStrings implementiert ist. Diese Klassen sind in ComCtrls.pas. Wenn Sie wissen, wie die Konvertierung in den RichEdit-Steuerelementen durchgeführt wird, können Sie möglicherweise eigene schreiben.

Wenn Sie jedoch die praktischen Aspekte der Implementierung betrachten und nicht wissen, welche Leistungsanforderungen für Ihre Frage gelten, würde ich mich für den in Ihrem Link beschriebenen TRichEdit-Konvertierungsansatz entscheiden.

+7

TRichEditStrings implementiert keine Konvertierung, die gesamte Arbeit wird vom RichEdit-Steuerelement ausgeführt (TRichEdit ist nichts anderes als ein Wrapper um Microsofts RichEdit-Steuerelement). Das Schreiben Ihrer eigenen RTF in TEXT-Implementierung ist einfach für den einfachen Fall und sehr kompliziert für die komplexen Fälle. Microsoft Word kann alle Dokumente in RTF speichern, wobei alle Formatierungen beibehalten werden. Denken Sie an das meistverwöhnte Word-Dokument, das Sie je gesehen haben, und verwenden Sie dabei die am meisten verzerrte Tabellenstruktur. Stellen Sie sich vor, jemand speichert das als RTF und fordert Sie auf, es in TEXT umzuwandeln! –

+0

Ok, ich werde dafür gehen. Es gibt 2 Probleme, die auf andere Weise gelöst werden sollten: Ich muss in einem DB rtf-Feld suchen (dafür verwende ich den Trick, nach der Zeichenfolge im RTF-Text zu suchen, es ist nicht der Efekt-Trick, aber tipcally funktioniert, wenn Suche nach einzelnen Wörtern), muss ich "als Text" in einem Raster den Inhalt von vielen RTF-Feldern zurückgeben (hier gibt die Problemumgehung RTF-formatierten Text zurück). Natürlich könnte eine Alternative auch ein Textfeld speichern, so dass ich für jedes gespeicherte RTF-Format auch die Nur-Text-Version speichere, was ein guter Ansatz für eine neue Anwendung sein kann. – LaBracca

0

Die Seite

  • http://www.delphipraxis.net/152766-rtf-nach-html.html für einige Hinweise zu den Komponenten, Bibliotheken und andere Quellen für RTF-Konverter, sind einige von ihnen eine RTF-Text-Konvertierung Option.

  • ScroogeXHTML, eine Bibliothek für RTF zu HTML/XHTML-Konvertierung, könnte nützlich sein. Es unterstützt eine Teilmenge des RTF-Standards und ist einfach anzupassen. Es hat eine PlainText-Exportformatoption. Hinweis: Ich bin der Autor von ScroogeXHTML für Delphi/ScroogeXHTML für die Java-Plattform. Es ist ein kommerzielles Produkt.

Verwandte Themen