ソフトウェア開発プロセスでは、作業結果を顧客やパートナーとより適切に共有または表示するために、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 をインストールする手順は次のとおりです。
Go をインストールする手順は次のとおりです。
3. pandocfilters のインストール
pandocfilters は、Pandoc フィルターを作成できる Python ライブラリです。 Golang では、Python を Pandoc フィルターとして使用し、pandoc コマンドを通じて呼び出してテキスト変換を完了できます。 pandocfilters をインストールする手順は次のとおりです。
pip3 install pandocfilters
4. Golang プログラムを作成する
Golang を使用して、md テキストを Word ドキュメントに変換するプログラムを作成します。プログラムは主に、Pandoc フィルターと Golang プログラムの 2 つの部分に分かれています。
ターミナルまたはコマンド ライン ウィンドウに次のコマンドを入力します:
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
ファイルを保存して閉じます。
ターミナルまたはコマンド ライン ウィンドウに次のコマンドを入力します:
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 サイトの他の関連記事を参照してください。