导出流水线
取证报告常见的做法是正文用 Markdown 写,再用 pandoc 导出 PDF 或 HTML,原因是纯文本便于版本管理与多人改写,导出命令可重复执行,报告改一处不必重排整篇。导出 PDF 需要本机具备 LaTeX 引擎或 HTML 渲染引擎,中文必须显式指定 CJK 字体,否则会出现缺字或方框。
导出后要抽查什么
导出不是终点:页码与目录是否与正文一致、附录里的哈希与清单是否完整换行、代码块是否被折行破坏、插图分辨率是否够打印。这些在 Word 或 Markdown 预览里看不出来,只有在 PDF 上翻一遍才会暴露。
基本信息
| 适用平台 | 跨平台命令行(pandoc、xelatex、wkhtmltopdf、LibreOffice) |
|---|---|
| 常见链路 | Markdown → pandoc → PDF(xelatex)或 → HTML → PDF |
| 中文字体 | xelatex 需通过 CJKmainfont 指定,如 Noto Sans CJK SC |
| 版本管理 | Markdown 源文件与导出产物一并归档 |
| 交付格式 | 对外固定 PDF,内部保留 Markdown 源 |
典型使用场景
- 多人协同一份报告:各自在 Markdown 片段上写稿,最后统一渲染
- 对外交付固定版式:用同一模板导出 PDF,保证不同案例外观一致
- 需要网页版:导出 HTML 便于在内部平台展示与检索
- 快速出草稿:先用 HTML 中转看结构,再统一调 PDF 版式
- 报告发布后修订:只改 Markdown,重新导出并记录版本时间
导出与校验
导出与校验
# 直接导出 PDF,指定中文字体避免缺字
pandoc report.md -o report.pdf --pdf-engine=xelatex \
-V CJKmainfont='Noto Sans CJK SC' -V geometry:margin=2.5cm
# 以 HTML 为中转,再用浏览器或 wkhtmltopdf 出 PDF
pandoc report.md -o report.html --standalone --toc --metadata title='CASE-2026-001'
# 导出后检查页数与文件大小,确认没有渲染中断
pdfinfo report.pdf | grep -E 'Pages|File size'常见导出问题与处理
| 现象 | 原因 | 处理方式 |
|---|---|---|
| 中文显示为方框 | 引擎未指定中文字体 | 设置 CJKmainfont 或改用 HTML 中转 |
| 目录页码错位 | 正文有未渲染的标题层级 | 统一标题级别后重新导出 |
| 代码块被折行 | 页面宽度不足或未用等宽环境 | 调整页边距或用支持长行的代码环境 |
| 附录哈希断行 | 自动换行破坏长字符串 | 设置不折行样式或分列排版 |
| 表格跨页错乱 | 表格过宽或行高过大 | 拆分表格或改用横向页面 |
导出用的模板、字体与命令要写进报告的方法说明或附录,保证同一案例在别的机器上能复现出同样的版式。
PDF 一旦交付就难以修订,交付前把「草稿」与「定稿」分开命名并记录导出时间,避免对外发出的版本与内部归档版本不一致。