You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hugo站点PDF导出实现:如何将生成PDF存储至对应Markdown源文件所在目录

实现方案

你不需要额外用JSON存储路径映射,之前逻辑混乱的核心原因是把Tex统一存入独立文件夹时,丢失了和源Markdown文件的路径关联。现在只要在首次遍历到Markdown文件时就把后续所有生成文件的路径确定好,直接按顺序完成转换,就可以直接把PDF回存到源文件所在目录,完全避免跨文件夹存储的混乱问题。

具体操作步骤

  • 第一步:引入Node.js内置的path模块,用于规范处理路径,避免不同操作系统的路径分隔符兼容问题,代码开头加一行:
    const path = require('path')
    
  • 第二步:修改遍历逻辑,识别到Markdown文件时直接生成对应Tex、PDF的存储路径,修改后的完整代码如下:
    const fs = require('fs')
    const path = require('path')
    const contentPath = "../../content"
    
    function inner (subPath){
      const fullPath = path.join(contentPath, subPath)
      const is_path_a_folder = fs.existsSync(fullPath) && fs.lstatSync(fullPath).isDirectory()
    
      if (is_path_a_folder){
        const directory = fs.readdirSync(fullPath)
        directory.forEach((subSubPath) => {
          inner(path.join(subPath, subSubPath))
        })
      } else if (fs.existsSync(fullPath)) {
        if (subPath.endsWith(".md")) {
          // 提取源文件的目录和文件名信息
          const mdDir = path.dirname(fullPath) // 源md文件所在目录
          const mdNameWithoutExt = path.basename(fullPath, '.md') // 源md文件名(不含后缀)
          // 直接生成同目录下的tex、PDF输出路径
          const texOutputPath = path.join(mdDir, `${mdNameWithoutExt}.tex`)
          const pdfOutputPath = path.join(mdDir, `${mdNameWithoutExt}.pdf`)
    
          // 传入输出路径给转换函数
          convertToTex(fullPath, texOutputPath)
          // 转换完tex后直接调用生成PDF的函数
          convertTexToPdf(texOutputPath, pdfOutputPath)
    
          // 如果不需要保留中间tex文件,生成PDF后可以直接删除
          // fs.unlinkSync(texOutputPath)
        }
      }
    } 
    
  • 第三步:调整你的convertToTex和convertTexToPdf函数入参,直接用上面传入的输出路径存储生成的文件即可,不需要再写死统一的输出文件夹。

可选操作(仅当你需要单独存储中间Tex文件时使用)

如果你确实有需求要把Tex文件统一存在单独的文件夹,才需要用到JSON存储路径映射,实现逻辑如下:

  1. 遍历前初始化空映射对象:const pathMap = {}
  2. 每次处理md文件时,把源md路径、tex存储路径、PDF存储路径存入映射:pathMap[fullPath] = { texPath: texOutputPath, pdfPath: pdfOutputPath }
  3. 所有文件遍历完成后,把映射写入JSON文件:fs.writeFileSync('./path-map.json', JSON.stringify(pathMap, null, 2))

内容的提问来源于stack exchange,提问作者Rose Gnoccy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:36:00