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:
pustaka gofpdf, digunakan untuk menjana fail PDF di Golang. Ia boleh dipasang melalui arahan berikut:
go get -u github.com/jung-kurt/gofpdf
Selepas memasang kedua-dua perpustakaan ini, kita boleh mula melaksanakan fungsi HTML kepada PDF Berikut ialah langkah khusus:
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) }
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.
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!