Maison  >  Article  >  développement back-end  >  html en pdf golang

html en pdf golang

王林
王林original
2023-05-15 15:22:081305parcourir

Dans les projets de développement réels, il peut être nécessaire de convertir du HTML en PDF. Par exemple, nous souhaitons enregistrer certaines pages sous forme de fichiers PDF pour les imprimer ou les distribuer, etc. Il est également très simple d'utiliser le langage Golang pour réaliser cette exigence. Expliquons étape par étape comment utiliser Golang pour réaliser la fonction de conversion HTML en PDF.

Nous devons d'abord clarifier quelques concepts :

HTML (Hyper Text Markup Language), langage de balisage hypertexte, utilisé pour créer des documents structurés et des pages Web, accessibles via un navigateur.

PDF (Portable Document Format), un format de document portable, convient à plusieurs systèmes d'exploitation et peut afficher la même apparence sur différents appareils.

Ensuite, nous devons utiliser quelques bibliothèques importantes :

  1. bibliothèque gofpdf, utilisée pour générer des fichiers PDF dans Golang. Il peut être installé via la commande suivante :

    go get -u github.com/jung-kurt/gofpdf

  2. wkhtmltopdf, un outil en ligne de commande pour convertir HTML/CSS en PDF, peut être téléchargé à cette URL : https://wkhtmltopdf.org/downloads.html

Après avoir installé ces deux bibliothèques, nous pouvons commencer à implémenter la fonction HTML vers PDF. Voici les étapes spécifiques :

  1. Lire le contenu du fichier HTML

Nous devons d'abord lire le fichier HTML pour convertir le contenu localement. , vous pouvez utiliser la méthode Open dans le package os pour ouvrir le fichier, puis utiliser la méthode ReadFile dans le package ioutil pour lire le contenu du fichier. Le code spécifique est le suivant :

content, err := ioutil.ReadFile("path/to/html")
if err != nil {
    log.Fatalf("Could not read html file: %v", err)
}
  1. Convertir le contenu HTML en PDF
.

Nous pouvons utiliser le package exec pour L'outil de ligne de commande wkhtmltopdf est appelé pour convertir le contenu HTML en fichiers PDF. Le code spécifique est le suivant :

cmd := exec.Command("wkhtmltopdf", "-", "path/to/pdf")
stdin, err := cmd.StdinPipe()
if err != nil {
    log.Fatalf("Could not get stdin pipe: %v", err)
}
go func() {
    defer stdin.Close()
    _, _ = io.WriteString(stdin, string(content))
}()
out, err := cmd.CombinedOutput()
if err != nil {
    log.Fatalf("Could not convert html to pdf: %v: %s", err, out)
}

Parmi eux, cmd.StdinPipe() renvoie un tube qui peut être écrit sur l'entrée standard de la commande. Nous pouvons utiliser le contenu HTML comme entrée standard de la commande. cmd.CombinedOutput() attend la fin de la commande et renvoie le résultat de la commande. S'il y a une erreur, il renvoie un message d'erreur.

  1. Informer l'utilisateur que la conversion a réussi

Enfin, nous devons informer l'utilisateur que le fichier HTML a été converti avec succès en fichier PDF. Le code est le suivant :

fmt.Println("Convert completed.")

Le code complet est le suivant :

package main

import (
    "fmt"
    "io"
    "io/ioutil"
    "log"
    "os/exec"
)

func main() {
    content, err := ioutil.ReadFile("path/to/html")
    if err != nil {
        log.Fatalf("Could not read html file: %v", err)
    }

    cmd := exec.Command("wkhtmltopdf", "-", "path/to/pdf")
    stdin, err := cmd.StdinPipe()
    if err != nil {
        log.Fatalf("Could not get stdin pipe: %v", err)
    }
    go func() {
        defer stdin.Close()
        _, _ = io.WriteString(stdin, string(content))
    }()
    out, err := cmd.CombinedOutput()
    if err != nil {
        log.Fatalf("Could not convert html to pdf: %v: %s", err, out)
    }

    fmt.Println("Convert completed.")
}

Dans le code ci-dessus, nous utilisons la bibliothèque gofpdf pour générer des fichiers PDF via le code Golang. Nous pouvons utiliser les méthodes pertinentes de la bibliothèque gofpdf pour ajouter du texte, des images, des tableaux, etc., puis générer un fichier PDF. Le code est le suivant :

package main

import (
    "fmt"
    "github.com/jung-kurt/gofpdf"
    "log"
)

func main() {
    pdf := gofpdf.New("P", "mm", "A4", "")

    pdf.AddPage()

    pdf.SetFont("Arial", "B", 16)
    pdf.Cell(40, 10, "Hello, World!")

    pdf.Image("path/to/image", 10, 20, 30, 0, false, "", 0, "")

    pdf.OutputFileAndClose("path/to/pdf")

    fmt.Println("PDF created.")
}

Dans le code ci-dessus, nous créons un fichier PDF et ajoutons Hello. , Du monde à lui ! et une photo. Enfin, nous enregistrons le fichier PDF localement et indiquons à l'utilisateur que le fichier PDF a été créé avec succès.

Résumé : La conversion de HTML en PDF est une exigence très courante, qui peut également être réalisée dans le langage Golang via des outils de ligne de commande et des bibliothèques associées. J'espère qu'à travers cet article, les lecteurs auront une compréhension complète et approfondie de ce processus et pourront l'utiliser de manière flexible dans le développement réel.

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!

Déclaration:
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