如何在Cocoa中将RTF文本转换为Markdown格式的纯文本?

8
我需要能够将RTF或HTML转换为Markdown格式的纯文本,以便上传到我的服务器。我需要在Cocoa/Obj-C 2.0中实现这一点。有人知道如何做吗?
非常感谢 —» Alex。
编辑于周四下午4:53
嗯。回答Yuji的评论,我正在尝试制作一个接受文本的NSStatusItem拖放程序。无论文本是什么格式,都没有关系,但我需要能够将其格式化为纯文本或使用Markdown格式化的纯文本。我猜因为我不知道我将收到什么样的文本...

你需要多少保真度?HTML/RTF 拥有比 Markdown 文档更多的功能... - Yuji
3个回答

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规范要丰富得多,因此将丢失较少的信息,并且您将能够恢复Markdown的html——或通过latex制作pdf等。相当容易地对其进行特殊用途的修改
我不知道它们是否稳定,但是越来越多的语言绑定Pandoc库。在Github上搜索建议与Obj C连接最相关的是普通C libpandoc。Ruby似乎有最活跃的活动——我猜是因为这是github——使用pandokupandoc-rubyrails-pandoc等。

2
哦,这会很棘手。正如Yuji所说,HTML/RTF比Markdown可以表达更多的内容。既然如此...
我会将内容转换为NSAttributedString。你可以轻松地从RTF数据构建NSAttributedString;HTML则要困难得多。不过,一旦你这样做了,就是检查字符串上的所有属性并将等效的markdown应用于内容的纯文本版本。
再深入研究一下:
  • Markdownify - 将HTML转换为PHP中的Markdown
  • Pandoc - 将Markdown(和一些格式)转换为其他富文本格式。它支持Markdown => RTF,因此您可以使用它来创建反向转换。

虽然这是正确的,但我决定只使用纯文本。无论如何,谢谢! :) - Alexsander Akers

2
有一个在线表单可以做到这一点:MarkItDown

谢谢 - 这对我很有帮助,因为我的前几次使用Pandoc失败了,留下了许多来自Microsoft Office源文件的额外垃圾文本。 - ChristopherE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接