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 :
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}}
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" )
Ensuite, nous définissons une structure pour enregistrer les données dynamiques :
type Order struct { Name string OrderNumber string TotalPrice float64 }
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文档生成成功!") }
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" )
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文件导出成功!") }
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!