Maison > développement back-end > Golang > golang md en mot

golang md en mot

PHPz
Libérer: 2023-05-13 09:53:37
original
1327 Les gens l'ont consulté

Pendant le processus de développement de logiciels, nous devons souvent convertir du texte ou un langage de balisage dans d'autres formats, tels que la conversion de texte md en documents Word, afin de mieux partager ou afficher les résultats de notre travail avec nos clients ou partenaires. Dans cet article, nous présenterons comment utiliser Golang pour convertir du texte md en document Word via la bibliothèque pandoc.

1. Présentation de Pandoc

Pandoc est un convertisseur de texte gratuit et open source qui peut convertir des fichiers texte et en langage de balisage dans une variété de formats, tels que des documents HTML, EPUB, LaTeX, PDF et Microsoft Word. Pandoc prend en charge presque tous les langages de balisage, notamment Markdown, reStructuredText, HTML, LaTeX, DocBook, MediaWiki, TWiki et Textile. Pandoc prend en charge les styles et modèles personnalisés et propose de nombreuses options pour contrôler la sortie.

2. Installez Pandoc et Go

Avant de commencer à utiliser Pandoc et Go, nous devons d'abord les installer. Les étapes pour installer Pandoc sont les suivantes :

  1. Visitez https://github.com/jgm/pandoc/releases et téléchargez la dernière version pour votre système d'exploitation.
  2. Décompressez le fichier téléchargé en fonction de votre système d'exploitation.
  3. Ajoutez le fichier binaire Pandoc à la variable d'environnement PATH du système afin que Pandoc puisse être exécuté à partir de n'importe quel emplacement.

Pour installer Go :

  1. Visitez https://golang.org/dl/ et téléchargez la dernière version pour votre système d'exploitation.
  2. Installez le programme d'installation Go téléchargé et suivez les instructions pour terminer le processus d'installation.
  3. Configurez la variable d'environnement PATH de votre système afin que les commandes Go soient accessibles de n'importe où.

3. Installez pandocfilters

pandocfilters est une bibliothèque Python qui vous permet d'écrire des filtres Pandoc. Dans Golang, nous pouvons utiliser Python comme filtre Pandoc et l'appeler via la commande pandoc pour terminer la conversion de texte. Les étapes pour installer les pandocfilters sont les suivantes :

  1. Ouvrez une fenêtre de terminal ou de ligne de commande et entrez la commande suivante :
pip3 install pandocfilters
Copier après la connexion
  1. Attendez la fin de l'installation des pandocfilters.

4. Écrivez un programme Golang

Nous utiliserons Golang pour écrire un programme permettant de convertir du texte md en document Word. Le programme est principalement divisé en deux parties : le filtre Pandoc et le programme Golang.

  1. Pandoc Filter

Saisissez la commande suivante dans un terminal ou une fenêtre de ligne de commande :

nano pandocfilters/md_to_docx.py
Copier après la connexion

Collez ensuite le code Python suivant :

#!/usr/bin/env python3

import sys
import panflute as pf
from pandocfilters import toJSONFilter

def action(elem, doc):
    if isinstance(elem, pf.CodeBlock) and 'csljson' in elem.classes:
        return pf.RawBlock(elem.text, format='latex')
    if isinstance(elem, pf.Para) and len(elem.content) == 1 and isinstance(elem.content[0], pf.RawInline):
        return pf.RawBlock(elem.content[0].text, format='latex')
    if isinstance(elem, pf.Str) and len(elem.text) == 1 and ord(elem.text) > 126:
        return pf.RawInline(r'unicode{%04X}' % ord(elem.text), format='latex')
    if isinstance(elem, pf.Str) and len(elem.text) > 1 and all(ord(c) <= 126 for c in elem.text):
        return pf.RawInline(elem.text, format='latex')
    if isinstance(elem, pf.Image) and elem.url.startswith('data:'):
        return pf.Para(pf.Ide
Copier après la connexion

Enregistrez et fermez le fichier.

  1. Programme Golang

Entrez la commande suivante dans un terminal ou une fenêtre de ligne de commande :

nano md_to_docx.go
Copier après la connexion

Puis collez le code Golang suivant :

package main

import (
    "bytes"
    "io/ioutil"
    "os/exec"
)

func main() {
    // 读取Markdown文件
    data, err := ioutil.ReadFile("test.md")
    if err != nil {
        panic(err)
    }

    // 调用Pandoc过滤器转换Markdown为LaTeX
    cmd := exec.Command("pandoc", "--filter", "pandocfilters/md_to_docx.py", "-f", "markdown", "-t", "latex")
    cmd.Stdin = bytes.NewReader(data)
    out, err := cmd.Output()
    if err != nil {
        panic(err)
    }

    // 调用Pandoc将LaTeX转换为Word文档
    cmd = exec.Command("pandoc", "-f", "latex", "-t", "docx", "--lua-filter=/Users/username/pandocfilters/lua/uncite.lua")
    cmd.Stdin = bytes.NewReader(out)
    out, err = cmd.Output()
    if err != nil {
        panic(err)
    }

    // 将结果保存为Word文档
    err = ioutil.WriteFile("test.docx", out, 0644)
    if err != nil {
        panic(err)
    }
}
Copier après la connexion

Enregistrez et fermez le fichier.

5. Utilisez le programme Golang pour convertir md en word

Entrez la commande suivante dans le terminal ou la fenêtre de ligne de commande :

go run md_to_docx.go
Copier après la connexion

Le programme lira le fichier test.md dans le répertoire actuel et le convertira en test. fichier docx.

6. Résumé

Dans cet article, nous avons présenté comment utiliser Golang et Pandoc pour convertir du texte Markdown en document Word. Nous utilisons des filtres Pandoc pour convertir Markdown en LaTeX, puis utilisons Pandoc pour convertir des documents LaTeX en Word. Nous avons également expliqué comment utiliser les filtres Python et Pandoc pour le filtrage de texte. De cette façon, nous pouvons utiliser Golang pour appeler des scripts Python pour la conversion de texte. Nous avons également expliqué comment installer les bibliothèques Pandoc, Go et pandocfilters et les intégrer dans une solution complète.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal