ホームページ > バックエンド開発 > Golang > Go 言語のテンプレート関数を使用して Word ドキュメントを動的に生成し、PDF をエクスポートするにはどうすればよいですか?

Go 言語のテンプレート関数を使用して Word ドキュメントを動的に生成し、PDF をエクスポートするにはどうすればよいですか?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2023-07-31 17:36:27
オリジナル
3742 人が閲覧しました

Go 言語のテンプレート関数を使用して Word ドキュメントを動的に生成し、PDF をエクスポートするにはどうすればよいですか?

はじめに:
開発プロセス中、多くの場合、テンプレートに基づいて Word ドキュメントを生成し、PDF にエクスポートする必要があります。この記事では、Go 言語のテンプレート関数の例を通じて PDF ドキュメントを動的に生成およびエクスポートする方法を紹介します。

1. 必要なライブラリとツールをインストールします
始める前に、次のライブラリとツールをインストールして設定する必要があります:

  1. Go 言語: Go にロケールが正しくインストールされ、構成されていること。
  2. GoDoc: ドキュメントを自動的に生成し、Go 言語ライブラリに関する詳細情報を表示するために使用されます。
  3. Go-PDF: Go 言語で PDF ファイルを操作するためのライブラリ。次のコマンドを使用して Go-PDF をインストールできます:
    go get -u github.com/signintech/gopdf

2. Word テンプレート ファイルを作成します
始める前に、 Word テンプレート ファイル (.docx 形式) を作成し、動的に生成する必要があるコンテンツを定義します。テンプレートにマーカーを含めることができるため、後続のステップでテンプレート関数を使用してマーカーを置き換えることができます。

以下は、簡単な Word テンプレート ファイルの例の内容です:

1

2

3

4

5

欢迎您,{{.Name}}!

 

以下是您的订单详情:

订单号:{{.OrderNumber}}

订单总价:{{.TotalPrice}}

ログイン後にコピー

{{.Name}}、{{.OrderNumber}}、および {{.TotalPrice}} は次のとおりです。タグがある場合は、テンプレート関数を使用して動的データに置き換えます。

3. テンプレート関数を使用して Word ドキュメントを生成する
まず、必要なパッケージとライブラリをインポートする必要があります:

1

2

3

4

5

6

7

package main

 

import (

    "fmt"

    "os"

    "text/template"

)

ログイン後にコピー

次に、動的データを保存するための構造を定義します:

1

2

3

4

5

type Order struct {

    Name        string

    OrderNumber string

    TotalPrice  float64

}

ログイン後にコピー

次に、テンプレート関数を使用して Word ドキュメントを生成します:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

func main() {

    // 定义模板文件路径

    tmpl := "./template.docx"

 

    // 定义动态数据

    order := Order{

        Name:        "张三",

        OrderNumber: "2021123456789",

        TotalPrice:  100.00,

    }

 

    // 解析模板文件

    t := template.Must(template.ParseFiles(tmpl))

 

    // 生成Word文档

    docxFile, err := os.Create("./output.docx")

    if err != nil {

        fmt.Println("创建Word文档失败:", err)

        return

    }

    defer docxFile.Close()

 

    // 渲染模板并写入Word文档

    err = t.Execute(docxFile, order)

    if err != nil {

        fmt.Println("生成Word文档失败:", err)

        return

    }

 

    fmt.Println("Word文档生成成功!")

}

ログイン後にコピー

4. Word ドキュメントを PDF にエクスポート
生成された Word ドキュメントを PDF にエクスポートするには、 Go-PDF ライブラリ 。

まず、必要なパッケージとライブラリをインポートする必要があります:

1

2

3

4

5

6

package main

 

import (

    "fmt"

    "github.com/signintech/gopdf"

)

ログイン後にコピー

次に、次のコードを使用して Word 文書を PDF に変換します:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

func main() {

    // 打开生成的Word文档

    docxFile, err := os.Open("./output.docx")

    if err != nil {

        fmt.Println("打开Word文档失败:", err)

        return

    }

    defer docxFile.Close()

 

    // 创建PDF文档

    pdf := gopdf.GoPdf{}

    pdf.Start(gopdf.Config{PageSize: *gopdf.PageSizeA4})

    pdf.AddPage()

 

    // 将Word文档内容添加到PDF中

    err = pdf.AddTTFFont("font", "./arialuni.ttf")

    if err != nil {

        fmt.Println("添加字体失败:", err)

        return

    }

 

    pdf.SetFont("font", "", 14)

    pdf.SetX(40)

    pdf.SetY(40)

 

    // 读取Word文档内容并写入PDF

    bs, _ := ioutil.ReadAll(docxFile)

    pdf.Cell(nil, string(bs))

 

    // 保存为PDF文件

    pdf.WritePdf("./output.pdf")

 

    fmt.Println("PDF文件导出成功!")

}

ログイン後にコピー

以下の点に注意してください。で使用されている上記のコード arialuni.ttf は、漢字の表示をサポートするために使用される Unicode フォント ファイルです。フォント ファイルをダウンロードして、プロジェクトのルート ディレクトリに保存する必要があります。

5. テスト実行
上記の手順を完了したら、 go run コマンドを使用してコードを実行します。操作が成功すると、output.docx と Output.pdf という 2 つのファイルがプロジェクトのルート ディレクトリに生成されます。

生成されたoutput.docxは動的に生成されたWord文書であり、output.pdfはWord文書をPDFにエクスポートした結果であることに注意してください。

結論:
この記事では、Go 言語のテンプレート機能を使用して Word ドキュメントを動的に生成し、PDF にエクスポートする方法を紹介します。このアプローチは非常に柔軟で、さまざまな動的な生成とエクスポートのニーズを満たすことができます。この記事が、Go 言語開発で Word ドキュメントを生成し、PDF をエクスポートするのに役立つことを願っています。

以上がGo 言語のテンプレート関数を使用して Word ドキュメントを動的に生成し、PDF をエクスポートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート