如何在不修改图片链接的情况下将带图DokuWiki文件转为docx?
问题
尝试用pandoc将带图片的DokuWiki文件转为docx,生成的docx文本内容正常,但图片无法加载,执行命令及报错如下:
PS W:\pages\app\mobile\manual> pandoc -f dokuwiki -t docx --resource-path ../../../../media -o add-pickup.docx add-pickup.txt [WARNING] Could not fetch resource /app/mobile/manual/addpickup-1.png: replacing image with description [WARNING] Could not fetch resource /app/mobile/manual/addpickup-2.png: replacing image with description [WARNING] Could not fetch resource /app/mobile/manual/addpickup-3.1.png: replacing image with description [WARNING] Could not fetch resource /app/mobile/manual/addpickup-4.png: replacing image with description [WARNING] Could not fetch resource /app/mobile/manual/addpickup-5.png: replacing image with description
Wiki目录结构(位于映射网络驱动器W:\):
Root (W:\) - media - app - mobile - manual - pages - app - mobile - manual
曾修改Wiki文件中的图片链接为{{:..:..:..:..:media:app:mobile:manual:addpickup-1.png}},虽能让pandoc加载图片,但导致DokuWiki无法识别这些链接,想知道能否通过配置--resource-path参数,在不修改图片链接的前提下解决问题?
解决方案
可以通过调整--resource-path参数解决,无需修改DokuWiki中的图片链接,以下两种方法都可行:
方法一:使用绝对路径指定resource-path
在当前执行命令的目录(W:\pages\app\mobile\manual)下,执行这条命令:
pandoc -f dokuwiki -t docx --resource-path "W:\media" -o add-pickup.docx add-pickup.txt
原理:--resource-path直接指向图片存储的根目录W:\media,pandoc会把报错里的/app/mobile/manual/addpickup-1.png(去掉开头的斜杠)拼接到该目录后,正好匹配图片的实际路径W:\media\app\mobile\manual\addpickup-1.png。
方法二:切换到Root目录执行命令
先切换到Wiki的根目录W:\,再执行这条命令:
pandoc -f dokuwiki -t docx --resource-path media -o pages/app/mobile/manual/add-pickup.docx pages/app/mobile/manual/add-pickup.txt
原理:把工作目录设为Root后,--resource-path media指定从media目录查找资源,DokuWiki图片链接解析后的路径app/mobile/manual/addpickup-1.png会直接对应到media/app/mobile/manual/addpickup-1.png,正好是图片的实际位置。
为什么之前的相对路径不行?
你之前用的../../../../media相对路径理论上确实指向W:\media,但在网络映射驱动器环境下,pandoc对相对路径的解析可能出现异常,换成绝对路径或切换工作目录就能规避这个问题。
内容的提问来源于stack exchange,提问作者RyanB

