如何在Cocoa中将RTF文本转换为Markdown-syntax纯文本?

时间:2010-05-20 18:28:30

标签: html cocoa markdown rtf

我需要能够将RTF或HTML转换为Markdown语法的纯文本,以便上传到我的服务器。我需要在Cocoa / Obj-C 2.0中实现这一点。有谁知道怎么做?

非常感谢 - »Alex。


周四4:53编辑

嗯。在回答Yuji的评论时,我正在尝试制作一个接受文本的NSStatusItem小滴。文本的格式无关紧要,但我需要能够将其格式化为纯文本或使用Markdown格式化的纯文本。我想因为我不知道我会收到什么样的文字......

3 个答案:

答案 0 :(得分:4)

以下是pandoc分析和写入的格式:

> pandoc --help
pandoc [OPTIONS] [FILES]

Input formats:  native, markdown, markdown+lhs, rst, rst+lhs, html, 
latex, latex+lhs

Output formats:  native, html, html+lhs, s5, docbook, opendocument, odt, latex, 
latex+lhs, context, texinfo, man, markdown, markdown+lhs, plain, rst, rst+lhs, 
mediawiki, rtf

不幸的是,rtf不是它解析的格式之一。它是一个Haskell程序,因此在不安装Haskell平台的情况下获取它是不方便的。从解析的文档中,它可以编写一种“普通”子Markdown,或标准Markdown,或其自己丰富的Markdown,以及一堆其他格式。内部(“本机”)表示比标准Markdown规范要求更丰富,因此将丢失更少的信息,并且您将能够恢复用于降价的html - 或通过乳胶制作pdf等。它是相当容易hack at it for special purposes

我不知道它们中的任何一个是否稳定但是来自其他语言的Pandoc库的绑定数量越来越多。对Github的搜索表明,最相关的寻找与Obj C挂钩的是普通的C libpandoc。 Ruby看起来活动最多 - 我猜是因为它是github - 有pandokupandoc-rubyrails-pandoc等等。

答案 1 :(得分:2)

Oooph,这将是棘手的。正如Yuji所说,你可以在HTML / RTF中表达比在降价时更多的表达。既然如此......

我会将内容转换为NSAttributedString。您可以从RTF数据轻松构造NSAttributedString; HTML将更加困难。但是,一旦你这样做,就要检查字符串上的所有属性并将等效的markdown应用于内容的纯文本版本。

进一步研究:

  • Markdownify - 将HTML转换为PHP中的Markdown
  • Pandoc - 将markdown(和某些格式)转换为其他富文本格式。它支持Markdown => RTF,因此您可以使用它来创建逆转换。

答案 2 :(得分:2)

有一个在线表单就是这样做的:MarkItDown