ruby - 使用 Ruby 和 Pandoc 将 Markdown 文本转换为 RTF?

标签 ruby markdown rtf richtext pandoc

使用 Ruby 和 Ruby-Pandoc。看起来是个不错的工具,如果我能让它工作的话。

我想将一些 Markdown 文本(带有嵌入式列表和其他花哨的内容)转换为 Rich Text。这是我正在转换的文本:

Title
===

This is a paragraph. Hallelujah.

Here comes a nested list.
---

* List item 1
  * List item 1.1
  * List item 1.2
* List item 2
  * List item 2.1

这是我的 Ruby 代码...

require 'pandoc-ruby'

input = File.read(test.md)
converter = PandocRuby.new(input, from: :markdown, to: :rtf)
puts converter.convert

...(将输出保存到文件后)生成的文档只有标题:

screenshot of RTF

这是 RTF 文件的代码:

{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 Title\par}
{\pard \ql \f0 \sa180 \li0 \fi0 This is a paragraph. Hallelujah.\par}
{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 Here comes a nested list.\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 1\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 1.1\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 1.2\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 2\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 2.1\sa180\par}

此外,即使它确实出现在我的 RTF 查看器 (Mac TextEdit) 中,RTF 代码似乎也丢失了所有列表嵌套。我不知道如何诊断这个,我是否没有在 Ruby-Pandoc 中声明必要的 header 信息或其他内容。

提前致谢!

最佳答案

将您的输出包装在序言和右大括号中。像这样:

{\rtf1\ansi\deff0{\fonttbl{\f0 Times New Roman;}}
{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 Title\par}
{\pard \ql \f0 \sa180 \li0 \fi0 This is a paragraph. Hallelujah.\par}
{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 Here comes a nested list.\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 1\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 1.1\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 1.2\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 2\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 2.1\sa180\par}
}

更新

我是否缺少“包装器”配置设置?

是的,根据 the gem readme .

If you are trying to generate a standalone file with full file headers rather than just a marked up fragment, remember to pass the :standalone option so the correct header and footer are added.

缺少嵌套列表怎么办?

根据 PanDoc documentation ,您的源文本还缺少 2 个缩进空格。

所以将它们放在一起,这就是完整的解决方案。

您的源文件:

Title
===

This is a paragraph. Hallelujah.

Here comes a nested list.
---

* List item 1
    * List item 1.1
    * List item 1.2
* List item 2
    * List item 2.1

转换代码:

require 'pandoc-ruby'
input = File.read('./test.md')
puts PandocRuby.markdown(input).to_rtf(:standalone)

关于ruby - 使用 Ruby 和 Pandoc 将 Markdown 文本转换为 RTF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12792458/

相关文章:

ruby-on-rails - 错误 `require'/usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb :59:in `require' : cannot

java - 使用Java格式将rtf转换为html

php - 将 HTML 转换为 RTF(HTML2RTF 转换器)

hide - 用于隐藏和取消隐藏的富文本格式标签

ruby-on-rails - 当您可以只使用 "="(来自 Hartl 的教程)时,为什么需要分配方法?

ruby - 在 redis 或 memcached (ruby) 中存储复杂对象

fonts - R markdown-如何将字体切换到Times New Roman?

node.js - 在 Wintersmith 中访问额外的 Markdown 元数据参数

r - 在 R Markdown 中将文本方向更改为从右到左

ruby-on-rails - Rails 4 使用多个 URL 参数测试嵌套资源