You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Pandoc解析HTML时会跳过video标签?

Pandoc解析HTML时

问题复现

$ echo '<video><source src="filename.mp4" type="video/mp4"></video>' \
    | pandoc -f html -t html
# 输出为空

问题现象

移除-f html参数后,Pandoc可正常传递并格式化输入,但业务需求需要让Pandoc解析内容并入文档树,以识别样式等信息。在线测试时得到以下提示:

<video controls><source src="filename.mp4" type="video/mp4"></video>
---
> Skipped '<video controls>' at input line 1 column 1
> Skipped '<source src="filename.mp4" type="video/mp4">' at input line 1 column 17
> Skipped '</video>' at input line 1 column 61
# 输出为空

已尝试的无效方案

  • 将video标签放入段落等容器中,标签仍消失
  • 使用--self-contained、--embed-resources参数,无效果
  • 最终命令携带--standalone参数,与问题无关

核心原因

Pandoc的HTML解析器默认仅识别其文档模型支持的结构化文本元素(如段落、标题、列表、图片等),<video>这类富媒体标签不在默认支持列表内,会被判定为“未知元素”直接跳过。

解决方法

方法1:使用--html-q-tags参数

该参数会让Pandoc保留所有无法识别的HTML标签,将其作为原始HTML块保留在输出中,同时正常解析其他支持的元素:

$ echo '<video><source src="filename.mp4" type="video/mp4"></video>' \
    | pandoc -f html --html-q-tags -t html

方法2:自定义Lua过滤器实现精细控制

如果需要修改标签属性、整合进文档树等个性化处理,可编写Lua过滤器:

function RawBlock (raw)
  if raw.format == "html" and raw.text:match("<video") then
    -- 示例:自动添加controls属性
    local modified = raw.text:gsub("<video", "<video controls")
    return RawBlock("html", modified)
  end
  return raw
end

使用方式:

$ echo '<video><source src="filename.mp4" type="video/mp4"></video>' \
    | pandoc -f html -t html --lua-filter=video-filter.lua

内容的提问来源于stack exchange,提问作者user203864

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 13:52:36