Coder-D 2023-02-16 17:18 采纳率: 50%
浏览 25
已结题

golang md文件转为PDF文件,有没有好用的插件推荐呀?

golang实现后端读取本地文件夹中的md文件后转为PDF文件。md文件图片代码都需要正常呈现处理。

  • 写回答

3条回答 默认 最新

  • 快撑死的鱼 2023-02-16 18:27
    关注

    回答不易,求求您采纳点赞哦 感激不尽

    可以使用golang的blackfriday和wkhtmltopdf库来实现将Markdown文件转换为PDF文件的功能。blackfriday是一个流行的Markdown解析器,支持将Markdown文本解析为HTML代码。wkhtmltopdf则是一个将HTML文件转换为PDF文件的命令行工具,可以通过golang的os/exec包来执行该命令行工具。

    以下是一个示例代码,使用blackfriday将Markdown文本解析为HTML代码,并使用wkhtmltopdf将HTML文件转换为PDF文件:

    package main
    
    import (
        "bytes"
        "fmt"
        "io/ioutil"
        "os"
        "os/exec"
        "path/filepath"
        "strings"
    
        "github.com/russross/blackfriday"
    )
    
    func main() {
        // 读取指定文件夹中的所有Markdown文件
        mdFiles, err := filepath.Glob("/path/to/folder/*.md")
        if err != nil {
            fmt.Println(err)
            return
        }
    
        for _, mdFile := range mdFiles {
            // 读取Markdown文件内容
            mdContent, err := ioutil.ReadFile(mdFile)
            if err != nil {
                fmt.Println(err)
                continue
            }
    
            // 将Markdown内容解析为HTML代码
            htmlContent := blackfriday.Run(mdContent)
    
            // 生成HTML文件
            htmlFileName := strings.TrimSuffix(mdFile, filepath.Ext(mdFile)) + ".html"
            err = ioutil.WriteFile(htmlFileName, htmlContent, 0644)
            if err != nil {
                fmt.Println(err)
                continue
            }
    
            // 将HTML文件转换为PDF文件
            pdfFileName := strings.TrimSuffix(htmlFileName, ".html") + ".pdf"
            cmd := exec.Command("wkhtmltopdf", htmlFileName, pdfFileName)
            var out bytes.Buffer
            cmd.Stdout = &out
            err = cmd.Run()
            if err != nil {
                fmt.Println(err)
                continue
            }
            fmt.Println("PDF file generated:", pdfFileName)
    
            // 删除生成的HTML文件
            err = os.Remove(htmlFileName)
            if err != nil {
                fmt.Println(err)
                continue
            }
        }
    }
    
    
    

    该示例代码遍历指定文件夹中的所有Markdown文件,将Markdown文件解析为HTML代码,并生成对应的HTML文件。然后,使用wkhtmltopdf将HTML文件转换为PDF文件,并删除生成的HTML文件。需要注意的是,在将Markdown文件解析为HTML代码时,如果Markdown文件中包含图片,blackfriday会将图片的路径解析为相对路径,需要将图片路径转换为绝对路径,否则在转换HTML文件时会出现图片无法显示的问题。可以使用path/filepath包中的Abs函数将相对路径转换为绝对路径。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月24日
  • 已采纳回答 2月16日
  • 创建了问题 2月16日

悬赏问题

  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥100 已有python代码,要求做成可执行程序,程序设计内容不多
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答