Uncategorized

Klien Gotenberg streaming pertama untuk Go / Habr


https://gotenberg.dev/

Klien Go untuk Gotenberg – layanan konversi dokumen yang mendukung mesin manipulasi Chromium, LibreOffice, dan PDF.

go get github.com/nativebpm/gotenberg

Fitur

Mesin Konversi

Kromium

Konversi konten web ke PDF:

  • URL â†' PDF

  • File HTML â†' PDF

  • Penurunan harga â†' PDF

Mendukung:

  • Properti halaman khusus (ukuran, margin, orientasi)

  • Header & footer dengan nomor halaman

  • Strategi tunggu (penundaan, ekspresi JavaScript)

  • Cookie & header HTTP khusus

  • Jenis media yang ditiru (layar/cetak)

Kantor Libre

Konversi dokumen Office:

  • Word (.docx, .doc) â†' PDF

  • Excel (.xlsx, .xls) â†' PDF

  • PowerPoint (.pptx, .ppt) â†' PDF

  • Format OpenDocument â†' PDF

Mesin PDF

Operasi PDF:

  • Gabungkan beberapa PDF

  • Pisahkan halaman

  • Konversi gambar ke PDF

Mode Webhook

Konversi asinkron dengan callback:

  • Pengembalian 204 No Contentsegera

  • Hasil unggahan ke URL webhook di latar belakang

  • Pisahkan URL panggilan balik kesalahan

  • Header HTTP khusus untuk panggilan balik

Lihat dokumen webhook Gotenberg untuk detailnya.

Contoh dengan Docker:

docker run \
  -p 3000:3000 \
  --name gotenberg \
  --add-host="host.docker.internal:host-gateway" \
  gotenberg/gotenberg:8
package main

import (
 "context"
 "io"
 "log"
 "net/http"
 "os"
 "time"

 "github.com/nativebpm/gotenberg"
)

func main() {
 client, err := gotenberg.NewClient(&http.Client{}, "http://localhost:3000")
 if err != nil {
  log.Fatal(err)
 }

 // Convert web page from URL to PDF
 resp, err := client.
  Chromium().
  ConvertURL(context.Background(), "https://gotenberg.dev/docs/getting-started/introduction").
  PaperSizeA4().
  Margins(1, 1, 1, 1).
  PrintBackground().
  Timeout(30 * time.Second).
  Send()
 if err != nil {
  log.Fatal(err)
 }
 defer resp.Body.Close()

 f, err := os.Create("converturl-chromium.pdf")
 if err != nil {
  log.Fatal(err)
 }
 defer f.Close()

 _, err = io.Copy(f, resp.Body)
 if err != nil {
  log.Fatal(err)
 }

 log.Println("PDF generated from URL: converturl-chromium.pdf")
}
package main

import (
 "context"
 "io"
 "log"
 "net/http"
 "os"
 "strings"

 "github.com/nativebpm/gotenberg"
)

func main() {
 client, err := gotenberg.NewClient(&http.Client{}, "http://localhost:3000")
 if err != nil {
  log.Fatal(err)
 }

 html := strings.NewReader("<html><body><h1>Hello World!</h1></body></html>")

 resp, err := client.Chromium().
  ConvertHTML(context.Background(), html).
  PaperSizeA6().
  Margins(0.5, 0.5, 0.5, 0.5).
  Send()
 if err != nil {
  log.Fatal(err)
 }
 defer resp.Body.Close()

 f, _ := os.Create("out.pdf")
 io.Copy(f, resp.Body)
 f.Close()
}

Contoh Lengkap

Github: https://github.com/nativebpm/gotenberg



Klien Gotenberg streaming pertama untuk Go / Habr

Leave a Reply

Your email address will not be published. Required fields are marked *