Rumah  >  Artikel  >  pembangunan bahagian belakang  >  html ke pdf golang

html ke pdf golang

王林
王林asal
2023-05-15 15:22:081381semak imbas

Dalam projek pembangunan sebenar, mungkin terdapat keperluan untuk menukar HTML kepada PDF Contohnya, kami ingin menyimpan beberapa halaman sebagai fail PDF untuk dicetak atau diedarkan. Ia juga sangat mudah untuk menggunakan bahasa Golang untuk merealisasikan keperluan ini Mari kita terangkan langkah demi langkah cara menggunakan Golang untuk merealisasikan fungsi menukar HTML kepada PDF.

Mula-mula kita perlu menjelaskan beberapa konsep:

HTML (Hyper Text Markup Language), hypertext markup language, digunakan untuk mencipta dokumen berstruktur dan halaman web, yang boleh diakses melalui penyemak imbas .

PDF (Format Dokumen Mudah Alih), format dokumen mudah alih, sesuai untuk berbilang sistem pengendalian dan boleh memaparkan rupa yang sama pada peranti yang berbeza.

Seterusnya, kita perlu menggunakan beberapa perpustakaan penting:

  1. pustaka gofpdf, digunakan untuk menjana fail PDF di Golang. Ia boleh dipasang melalui arahan berikut:

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

  2. wkhtmltopdf, alat baris arahan untuk menukar HTML/CSS kepada PDF, boleh dimuat turun di URL ini: https : //wkhtmltopdf.org/downloads.html

Selepas memasang kedua-dua perpustakaan ini, kita boleh mula melaksanakan fungsi HTML kepada PDF Berikut ialah langkah khusus:

  1. Baca kandungan fail HTML

Kita perlu terlebih dahulu membaca kandungan fail HTML untuk ditukar secara setempat Anda boleh menggunakan kaedah Buka dalam pakej os untuk membuka fail, dan kemudian gunakan pakej ioutil. Kaedah ReadFile membaca kandungan fail Kod khusus adalah seperti berikut:

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

Kita boleh menggunakan pakej exec. untuk memanggil alat baris arahan wkhtmltopdf dan Tukar kandungan HTML kepada fail PDF. Kod khusus adalah seperti berikut:

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)
}

Antaranya, cmd.StdinPipe() mengembalikan paip yang boleh ditulis kepada input standard arahan Kami boleh menggunakan kandungan HTML sebagai input standard arahan. cmd.CombinedOutput() menunggu arahan selesai dan mengembalikan output arahan Jika terdapat ralat, ia mengembalikan mesej ralat.

  1. Gesa pengguna bahawa penukaran berjaya

Akhir sekali, kami perlu menggesa pengguna bahawa fail HTML telah berjaya ditukar kepada fail PDF. Kodnya adalah seperti berikut:

fmt.Println("Convert completed.")

Kod lengkap adalah seperti berikut:

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.")
}

Dalam kod di atas, kami menggunakan perpustakaan gofpdf untuk menjana fail PDF melalui kod Golang. Kami boleh menggunakan kaedah yang berkaitan dalam perpustakaan gofpdf untuk menambah teks, gambar, jadual, dsb., dan kemudian menjana fail PDF Kodnya adalah seperti berikut:

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.")
}

Dalam kod di atas, kami mencipta PDF. fail dan tambahkannya padanya, Hello, World! Akhir sekali, kami menyimpan fail PDF secara setempat dan menggesa pengguna bahawa fail PDF telah berjaya dibuat.

Ringkasan: Menukar HTML kepada PDF ialah keperluan yang sangat biasa, yang juga boleh dicapai dalam bahasa Golang melalui alat baris arahan dan perpustakaan berkaitan. Saya berharap melalui artikel ini, pembaca akan mempunyai pemahaman yang komprehensif dan mendalam tentang proses ini dan dapat menggunakannya secara fleksibel dalam pembangunan sebenar.

Atas ialah kandungan terperinci html ke pdf golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Golang melaksanakan iteratorArtikel seterusnya:Golang melaksanakan iterator