【问题标题】:Cleaning up HTML formatted content for display within Flash?清理 HTML 格式的内容以在 Flash 中显示?
【发布时间】:2012-03-11 07:48:37
【问题描述】:

我想在 Flash Flex 应用程序中显示来自各种来源的 HTML 格式的内容。 Flash 在其文本字段中支持 HTML 格式,但与 Web 浏览器相比,它非常有限。是否有任何脚本可以将常见的 HTML 格式文本转换为 Flash 可以处理的格式?我的特定用例是:

  • 在 Flash 中显示 HTML 格式的电子邮件
  • 在 Flash 中显示 RTF 文件(在服务器上运行 RTF2HTML 转换之后)
  • 显示从其他来源复制并粘贴到 Flash 中的随机 HTML 内容

我对在客户端或服务器上运行的代码持开放态度,但服务器可能更可取。

【问题讨论】:

  • 有点有趣的问题我很好奇是否有任何可靠的服务器端 HTML 渲染引擎可以将预渲染数据作为位图数据发送回(尽管我想象这样做的开销这可能很荒谬)。或者客户端检查 StageWebView help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/…
  • 实际上我想知道你是否可以抓住 web-kit 并连接到它以呈现 HTML 服务器端,然后以某种方式将呈现的版本(编码为 jpg 或其他东西)发送回客户端。或者如果有人已经这样做了。
  • @shaunhusain 是的,有几个项目可以将网页呈现为服务器上的位图,然后将其发送回。您可以选择调用他们的 API 的 Web 服务,还是在您自己的服务器上运行的代码。几个链接:url2png.comwebthumb.bluga.net/homethumbalizr.comboutell.com/webthumbkhtml2png.sourceforge.net
  • 另外,StageWebView 需要 AIR(也不能在浏览器中运行),这对我的特殊情况没有帮助。不过可能对其他人有帮助。
  • 啊,好吧,抱歉忘记了仅限 AIR 的限制。 flash/flex 愿意直接解释的 HTML 非常有限,所以我认为您发布的内容将是一个理想的解决方案。使用您发布的那些有什么问题?图片大小还是它们都是付费服务,您正在寻找免费的解决方案?

标签: php html flash apache-flex actionscript


【解决方案1】:

支持的 html 标签的子集很差,并且永远没有改变:

<a>, <b>, <br>, <font>, <img>, <i>, <li>, <p>, <textformat>, <u>

这意味着无论转换质量如何,html 都无法完全按照预期呈现;如果你用更基本的标签替换不受支持的标签,你也可能会放弃很大一部分的 CSS 样式。

话虽如此,http://simplehtmldom.sourceforge.net/ (PHP) 可以进行一些调整,并且它也足以应对无效标记(看看您在处理来自各种来源的内容后如何,我想说仅此功能就可以从长远来看可以节省很多痛苦)-而不是替换

<h1>,...,<h6> => <b>
<strong>      => <b>
<em>          => <i>

并将其余部分明文放入段落中,您会惊讶于它仍然具有可读性。你也可以像这样有点花哨:

<h1> => <b class="header1">

并根据需要添加一些 css(虽然 flash css 支持也非常有限)

我一直把这个留作沙漠 - 你要么喜欢它,要么讨厌它,但它会成功的。假设您的应用程序部署在浏览器中(如果没有,我误读了您,请省去我的尴尬并在此处停止阅读),您可以使用 iframe 来显示您的 html,说真的。

JSAS 通信相当简单,您可以将其放置在应用程序的预定区域上,从而产生它是其中一部分的错觉;只需记住在 Flash 对象/嵌入上正确设置 windowmode,使其不会呈现在其他页面元素之上,然后增加 iframe z-index。

如果这被视为一种“丑陋”的方法,我不会感到惊讶,但它的内部很漂亮——你最终会得到逐字的 html 和真正的 css 支持。至于用户交互,您甚至可以拦截 iframe 中的链接点击等,并从影片剪辑中请求操作。

【讨论】:

  • 您的回答列出了很多想到的要点。尤其是在某个区域有 html 覆盖的部分,可能是处理 flash 自身 html 渲染的所有缺点的最合理的方法。您将如何将表格或表单转换为 flash html 子集? - 我只是看不到它通过 flash 自己的 html 渲染工作。
【解决方案2】:

您可以使用HTMLPurifier 并指定您想要支持的标签的白名单。

【讨论】:

    【解决方案3】:

    AS3 HTML Parser Library 不是我想要的,因为它不会转换 HTML,而是在 Flash 中呈现它,这意味着它不能编辑。但在某些情况下,我只想显示而不是编辑文本可能很有用。

    另一种选择是查看几个我希望能够显示的示例 HTML,然后编写正则表达式将它们转换为 Flash/TLF 期望的格式。但我觉得这可能是一项巨大的努力,因为 HTML 的范围很广。

    【讨论】:

    • 我不明白。如果您的目标只是显示 HTML 内容,那么您链接到的库似乎就是这样做的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    相关资源
    最近更新 更多