如何更改使用 pandoc 创建的 html 文档中提取的图像位置?

问题描述

我正在使用 pandoc 将 epub 文件转换为 html,但在使用 /images 文件夹存储图像和/或其他媒体的某些 epub 书籍时遇到问题。

示例:

pandoc -s --extract-media=bw_files bw.epub -o bw.html -M document-css=false  

将创建一个 bw_files 文件夹,其中包含提取的图像文件夹,但目标是移动它们并将它们在输出的 html 文档中的位置更改为 /,以便正确引用图像文件

解决方法

以下电话可能对您有所帮助:

pandoc -s --extract-media=. bw.epub -o bw.html -c my-style.css

请注意,不会创建示例中的子文件夹 bw_files。但是 .epub 文件的结构将被提取。结果取决于 .epub 文件的内部结构。

有关详细信息,请查看 Wikipedia EPUB

,

图像在转换过程中进入 pandoc 的“媒体包”。他们的文件名 可以在那里修改,图像的链接也可以。 Lua 过滤器 下面就是这样做的;将过滤器保存到一个文件,然后将该文件传递给 pandoc 通过--lua-filter

local mediabag = require 'pandoc.mediabag'

-- Delete image files and re-insert under new name
for fp,mt,contents in mediabag.items() do
  mediabag.delete(fp)
  mediabag.insert(fp:gsub('images/',''),contents)
end

-- adjust path to image file
function Image (img)
  img.src = img.src:gsub('images/','')
  return img
end

这是我在 pandoc 邮件列表上给出的答案的副本。