ホームページ  >  記事  >  バックエンド開発  >  golang MDからWordへ

golang MDからWordへ

PHPz
PHPzオリジナル
2023-05-13 09:53:371314ブラウズ

ソフトウェア開発プロセスでは、作業結果を顧客やパートナーとより適切に共有または表示するために、MD テキストを Word ドキュメントに変換するなど、テキストまたはマークアップ言語を他の形式に変換する必要がよくあります。この記事では、Golang を使用して、Pandoc ライブラリを通じて md テキストを Word ドキュメントに変換する方法を紹介します。

1. Pandoc の概要

Pandoc は、テキストおよびマークアップ言語ファイルを HTML、EPUB、LaTeX、PDF、Microsoft などのさまざまな形式に変換できる無料のオープンソース テキスト コンバーターです。 Word 文書。 Pandoc は、Markdown、reStructuredText、HTML、LaTeX、DocBook、MediaWiki、TWiki、Textile など、ほぼすべてのマークアップ言語をサポートしています。 Pandoc はカスタム スタイルとテンプレートをサポートし、出力を制御するための多くのオプションを提供します。

2. Pandoc と Go をインストールする

Pandoc と Go を使い始める前に、まずそれらをインストールする必要があります。 Pandoc をインストールする手順は次のとおりです。

  1. https://github.com/jgm/pandoc/releases にアクセスし、オペレーティング システムの最新バージョンをダウンロードします。
  2. お使いのオペレーティング システムに応じて、ダウンロードしたファイルを解凍します。
  3. Pandoc バイナリ ファイルをシステムの PATH 環境変数に追加して、Pandoc を任意の場所から実行できるようにします。

Go をインストールする手順は次のとおりです。

  1. https://golang.org/dl/ にアクセスし、オペレーティング システムの最新バージョンをダウンロードします。
  2. ダウンロードした Go インストーラーをインストールし、プロンプトに従ってインストール プロセスを完了します。
  3. システムの PATH 環境変数を設定して、どこからでも Go コマンドにアクセスできるようにします。

3. pandocfilters のインストール

pandocfilters は、Pandoc フィルターを作成できる Python ライブラリです。 Golang では、Python を Pandoc フィルターとして使用し、pandoc コマンドを通じて呼び出してテキスト変換を完了できます。 pandocfilters をインストールする手順は次のとおりです。

  1. ターミナルまたはコマンド ライン ウィンドウを開き、次のコマンドを入力します。
pip3 install pandocfilters
  1. pandocfilters のインストールが完了するまで待ちます。 。

4. Golang プログラムを作成する

Golang を使用して、md テキストを Word ドキュメントに変換するプログラムを作成します。プログラムは主に、Pandoc フィルターと Golang プログラムの 2 つの部分に分かれています。

  1. Pandoc フィルター

ターミナルまたはコマンド ライン ウィンドウに次のコマンドを入力します:

nano pandocfilters/md_to_docx.py

次に、次の Python コードを貼り付けます:

#!/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

ファイルを保存して閉じます。

  1. Golang プログラム

ターミナルまたはコマンド ライン ウィンドウに次のコマンドを入力します:

nano md_to_docx.go

次に、次の Golang コードを貼り付けます:

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)
    }
}

ファイルを保存して閉じます。

5. Golang プログラムを使用して md を word に変換します

ターミナルまたはコマンド ライン ウィンドウに次のコマンドを入力します:

go run md_to_docx.go

プログラムは、現在のディレクトリ ファイルを作成し、test.docx ファイルに変換します。

6. 概要

この記事では、Golang と Pandoc を使用して Markdown テキストを Word ドキュメントに変換する方法を紹介しました。 Pandoc フィルターを使用して Markdown を LaTeX に変換し、次に Pandoc を使用して LaTeX を Word 文書に変換します。テキスト フィルタリングに Python および Pandoc フィルタを使用する方法についても説明しました。このようにして、Golang を使用して Python スクリプトを呼び出し、テキスト変換を行うことができます。 Pandoc、Go、pandocfilters ライブラリをインストールし、それらを完全なソリューションに統合する方法についても説明しました。

以上がgolang MDからWordへの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。