2

我有一个heredoc字符串

  html =<<EOF
    <span>
      Hello hello 123
    </span>
    <a>Link1</a>
    <a>Link2Link2</a>
EOF

如果我说puts html,它将按原样给出 html,这意味着新行很好。如果我打电话p html,我会得到没有换行符的 html。

但是,我真正需要做的是将这个 html 转换为图片,它应该有换行符。我是这样做的:

kit  = IMGKit.new html, quality: 30
# using Magick::Image ......
# some code which is not important....
img.write("my_gif.gif")

几乎没问题,除了结果 html,正如我已经说过的那样,没有换行符,它只有一行:

<span>Hello hello 123</span><a>Link1</a><a>Link2Link2</a>

当然,如果我添加<br />标签,这一切都会解决。但是由于某种原因我不能这样做,我不想使用<br />并且仍然有换行符。

这不是问题,IMGKit或者Rmagic我很确定。

那么我该如何实现呢?

4

1 回答 1

1

我同意这不是问题IMGKit——它正在做它应该做的事情——渲染 HTML。heredoc 也没有任何问题,并且您可以使用 Ruby 的 HTML 表示来做任何神奇的事情,例如 HTML 源代码中的文字空白(空格、制表符、换行符)在呈现时变得可见。

HTML 查看器最常见的源空白呈现是任何长度的纯空白(无论是空格、制表符、换行符还是任何组合)都在视图中呈现为单个空格-> <-。此外,一个元素结束和另一个开始之间的空白通常被完全忽略(尽管元素本身的渲染可能会导致视图中的布局/间距效果)。

但是,您可以执行以下操作:

kit  = IMGKit.new html.gsub(/\n/,"<br/>"), quality: 30

<br/>并在不添加到您的heredoc的情况下呈现换行符。

于 2013-04-11T08:35:25.153 回答