mdpdf转换Markdown为PDF时如何添加含动态日期的页脚/页眉
问题根因
异常来自mdpdf处理自定义页眉/页脚的三个已知机制问题:
- 脚本执行时机错误:将
<script>标签放在页脚DOM元素之前时,mdpdf注入HTML会优先解析执行脚本,此时目标节点<span id="datetime">还未渲染到DOM树,getElementById返回null,动态内容无法写入指定位置,会因为作用域泄露被注入到页面顶层默认页眉区域(即左上角异常显示日期的位置)。 - 页脚容器缺少定位约束:使用废弃的
<center>标签仅能实现文本居中,没有绑定页脚的固定位置规则,导致静态文本偏移到左下角,无法对齐到底部居中位置。 - 缓存干扰:清空页脚文件后仍显示旧日期,是mdpdf本地临时缓存未清理导致的,之前执行失败的脚本残留在临时生成目录中被重复加载。
正确配置步骤
先清理本地mdpdf缓存,终端执行命令:
rm -rf ~/.cache/mdpdf/*重写
test_footer.html,遵循两个规则:脚本放在DOM元素之后,等待节点渲染完成再执行;给页脚容器加固定定位样式,废弃旧的<center>标签,文件内容如下:
<div style="position: fixed; bottom: 0; left: 0; right: 0; text-align: center; font-size: 10px;"> FOOTER with locale date: <span id="datetime"></span> </div> <script> window.onload = function() { const currentDate = new Date(); document.getElementById("datetime").textContent = currentDate.toLocaleDateString(); } </script>
- 执行转换命令时加上
--no-cache参数,避免旧缓存干扰,命令如下:mdpdf /Users/felix/test.md --footer=/Users/felix/test_footer.html --no-cache
注意事项
- 自定义页眉/页脚内的脚本禁止放在目标DOM元素之前,必须等对应节点渲染完成后再执行DOM操作
- 页眉/页脚的外层容器必须加
position: fixed定位规则,绑定到对应显示位置,否则会被PDF默认页边距挤压偏移 - 调试页眉/页脚配置时始终加
--no-cache参数,避免旧文件缓存导致的异常复现
内容的提问来源于stack exchange,提问作者soundflix
相关产品推荐
相关产品推荐

