我有一个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
的问题,因为我很确定。
那么我该如何实现呢?
答案 0 :(得分:1)
我同意这不是IMGKit
的问题 - 它正在做它应该做的事情 - 呈现HTML。 heredoc也没有任何问题,你可以用Ruby的HTML表示来做任何神奇的事情,这样HTML源中的文字空格(空格,制表符,换行符)在渲染时变得可见。
HTML查看器最常见的源空白呈现是,任何长度的纯空格(无论是空格,制表符,换行符还是任何组合)都会在视图中呈现为单个空格->
<-
。此外,一个元素结束与另一个元素结束之间的空白通常被完全忽略(尽管元素本身的渲染可能会导致视图中的布局/间距效果)。
但是,您可以这样做:
kit = IMGKit.new html.gsub(/\n/,"<br/>"), quality: 30
并在不向您的heredoc添加<br/>
的情况下渲染换行符。