这个博客是用 Hugo 搭建的,有一些文章和未公开的草稿,我希望可以处理成 PDF 格式。 Hugo 自身并没这类功能。
我自己比较习惯 LaTeX 那套的输出样式,干净整齐。
如果是标准的 Markdown 文件,这个问题其实很简单的,利用 Pandoc 即可。
| |
对于大部分的场景基本就够用了。
但是博客的情况是还有图片的引用问题。
为了一张图可以在多语言情况下用同样的路径引用,图片都是存储在 static/imgs 目录下的。
在文章引用图片的时候用的 imgs/xxx.webp 这样的格式。
所以如果直接处理已有的文章有两个问题:
- 图片的引用路径需要替换到本地的路径中。
- XeLaTeX 并不支持 WebP,还需要将处理好的 WebP 在加工成 PDF 时「还原」成 PNG/JPEG 等格式。
如果只是个别的几篇临时处理其实还好,但是这么操作几次后有点累。所以准备着手用 Pandoc Lua Filter 机制来实现。
我暂时不想将在用的这套「开源」出来,因为相关的代码只是针对我自己的情况做的处理。 还有很多情况没有兼容和处理过,也没有那个时间和精力,所以重点是分享思路。 开发时间上,用 Copilot 开发了大约五个小时(大部分都是在打磨细节和调试),工作量并不是很大。
整理好的 PRD 供参考(和当前的情况有些许出入) Markdown to PDF Generation Feature (Development Document)。
目前的一些成品效果见: