Maison > développement back-end > Golang > le corps du texte

Comment utiliser les fonctions de modèle en langage Go pour générer dynamiquement des documents Word et exporter des PDF ?

WBOY
Libérer: 2023-07-31 17:36:27
original
3341 Les gens l'ont consulté

Comment utiliser les fonctions de modèle en langage Go pour générer dynamiquement des documents Word et exporter des PDF ?

Introduction : 
Pendant le processus de développement, nous devons souvent générer des documents Word basés sur des modèles et les exporter au format PDF. Cet article explique comment générer et exporter dynamiquement des documents PDF à l'aide d'exemples de fonctions de modèle dans le langage Go.

1. Installez les bibliothèques et les outils requis
Avant de commencer, nous devons installer et configurer les bibliothèques et les outils suivants :

  1. Langue Go : Assurez-vous que l'environnement du langage Go a été correctement installé et configuré.
  2. GoDoc : utilisé pour générer automatiquement de la documentation et afficher les détails de la bibliothèque de langage Go.
  3. Go-PDF : Une bibliothèque pour manipuler des fichiers PDF en langage Go. Vous pouvez installer Go-PDF en utilisant la commande suivante :
    go get -u github.com/signintech/gopdf

2. Créez un fichier modèle Word
Avant de commencer, nous devons créer un fichier modèle Word (format .docx ) et Définir le contenu qui doit être généré dynamiquement. Les marqueurs peuvent être inclus dans le modèle afin que nous puissions les remplacer à l'aide des fonctions du modèle dans les étapes suivantes.

Voici le contenu d'un exemple simple de fichier de modèle Word :

欢迎您,{{.Name}}!

以下是您的订单详情:
订单号:{{.OrderNumber}}
订单总价:{{.TotalPrice}}
Copier après la connexion

Veuillez noter que {{.Name}}, {{.OrderNumber}} et {{.TotalPrice}} sont des balises et nous utiliserons des fonctions de modèle pour convertir les Remplacer par des données dynamiques.

3. Utilisez les fonctions de modèle pour générer des documents Word
Tout d'abord, nous devons importer les packages et les bibliothèques requis :

package main

import (
    "fmt"
    "os"
    "text/template"
)
Copier après la connexion

Ensuite, nous définissons une structure pour enregistrer les données dynamiques :

type Order struct {
    Name        string
    OrderNumber string
    TotalPrice  float64
}
Copier après la connexion

Ensuite, nous utilisons les fonctions de modèle pour générer Word. documents :

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文档生成成功!")
}
Copier après la connexion

4. Exporter un document Word au format PDF
Pour exporter le document Word généré au format PDF, nous devons utiliser la bibliothèque Go-PDF.

Tout d'abord, nous devons importer les packages et bibliothèques requis :

package main

import (
    "fmt"
    "github.com/signintech/gopdf"
)
Copier après la connexion

Ensuite, nous utilisons le code suivant pour convertir le document Word en PDF :

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文件导出成功!")
}
Copier après la connexion

Veuillez noter que le arialuni.ttf utilisé dans le code ci-dessus est un Unicode fichier de police, utilisé pour prendre en charge l'affichage des caractères chinois. Vous devez télécharger le fichier de police et l'enregistrer dans le répertoire racine de votre projet.

5. Test d'exécution
Après avoir terminé les étapes ci-dessus, nous utilisons la commande go run pour exécuter le code. Après une opération réussie, deux fichiers, output.docx et output.pdf, seront générés dans le répertoire racine du projet.

Veuillez noter que le fichier output.docx généré est un document Word généré dynamiquement et que le fichier output.pdf est le résultat de l'exportation du document Word au format PDF.

Conclusion :
Cet article explique comment utiliser la fonction modèle dans le langage Go pour générer dynamiquement des documents Word et les exporter au format PDF. Cette approche est très flexible et peut répondre à une variété de besoins dynamiques de production et d’exportation. J'espère que cet article vous aidera à générer des documents Word et à exporter des PDF dans le développement du langage Go.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!