Pendahuluan
Aspose.PDF FOSS for Go adalah perpustakaan murni-Go untuk bekerja dengan dokumen PDF. Ia menyediakan API untuk membuat PDF baru dari awal, membuka dan mengedit file yang ada, memisahkan dokumen menjadi output per halaman, menggabungkan beberapa PDF, dan menerapkan enkripsi berbasis kata sandi — semua tanpa ketergantungan C atau C++ asli.
Perpustakaan ini tersedia sebagai modul Go di github.com/aspose-pdf-foss/aspose-pdf-foss-for-go dan dirilis di bawah lisensi MIT. Membutuhkan Go 1.24+.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goPostingan ini mencakup kemampuan inti: operasi dokumen, keamanan, pengisian AcroForm, tata letak tabel, penanda buku, dan anotasi.
Fitur Utama
Pemecahan dan Penggabungan Dokumen
Tipe Document menyediakan Split() untuk membagi PDF menjadi dokumen per halaman dan Append() untuk menggabungkan dokumen eksternal secara langsung. PageRange memungkinkan Anda bekerja dengan subset halaman untuk ekstraksi atau ekspor selektif. Metadata menampilkan field info dokumen untuk membaca dan menulis penulis, judul, dan tanggal pembuatan.
doc, _ := pdf.Open("report.pdf")
// Split into per-page PDFs
pages, _ := doc.Split()
for i, p := range pages {
p.Save(fmt.Sprintf("page%03d.pdf", i+1))
}
// Merge a second PDF into doc
doc2, _ := pdf.Open("appendix.pdf")
doc.Append(doc2)
doc.Save("combined.pdf")
Enkripsi Kata Sandi dan Izin
EncryptionOptions mengonfigurasi kata sandi pengguna, kata sandi pemilik, dan operasi yang diizinkan dalam satu panggilan ke SetEncryption. Algoritma yang didukung adalah AES-128 (default), AES-256 (ISO 32000-2, menghasilkan output PDF 2.0), dan RC4-128 untuk kompatibilitas lama. Permissions memungkinkan Anda mengizinkan atau menolak operasi individual — mencetak, menyalin, aksesibilitas — secara terpisah. OpenWithPassword membuka file terenkripsi; RemoveEncryption menghapus kata sandi sebelum menyimpan salinan teks biasa.
doc, _ := pdf.Open("contract.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "userpass",
OwnerPassword: "ownerpass",
Permissions: &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("contract_protected.pdf")
AcroForm Pemrosesan Field
Form menyediakan akses ke semua field AcroForm dalam sebuah dokumen. Field adalah antarmuka dasar; asersi tipe memberikan akses ke TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, dan ButtonField. Atur nilai field berdasarkan nama field — penampil secara otomatis menghasilkan kembali tampilan melalui /NeedAppearances=true saat menyimpan.
doc, _ := pdf.Open("application.pdf")
text := doc.Form().Field("full_name").(*pdf.TextBoxField)
text.SetValue("Jane Doe")
check := doc.Form().Field("agree_terms").(*pdf.CheckboxField)
check.SetChecked(true)
combo := doc.Form().Field("country").(*pdf.ComboBoxField)
combo.SetSelected(0)
doc.Save("application_filled.pdf")
Tata Letak Tabel
Table, Row, dan Cell membangun tata letak kisi terstruktur pada halaman PDF. BorderInfo mengonfigurasi gaya batas per sel atau untuk seluruh tabel. MarginInfo mengatur padding sel. TextStyle mengontrol font, ukuran, warna, dan perataan melalui HAlign dan VAlign. Image dapat ditempatkan di dalam sel bersama teks.
doc, _ := pdf.Open("invoice_template.pdf")
tbl := pdf.NewTable()
tbl.SetColumnWidths([]float64{120, 80, 80})
row := tbl.AddRow()
row.AddCell("Item")
row.AddCell("Qty")
row.AddCell("Price")
page, _ := doc.Page(1)
page.AddTable(tbl, pdf.Rectangle{LLX: 72, LLY: 100, URX: 540, URY: 700})
doc.Save("invoice.pdf")
Penanda dan Navigasi
OutlineItemCollection mewakili satu entri bookmark. Gunakan SetTitle, SetBold, SetColor, dan SetDestination untuk mengonfigurasinya. DestinationXYZ menargetkan koordinat halaman yang tepat; DestinationFit menyesuaikan halaman dalam penampil. NamedDestinations mendaftarkan target lompat yang dapat digunakan kembali dan dapat diakses dengan nama.
doc, _ := pdf.Open("manual.pdf")
page, _ := doc.Page(1)
chapter := pdf.NewOutlineItemCollection(doc)
chapter.SetTitle("Chapter 1: Getting Started")
chapter.SetBold(true)
chapter.SetDestination(pdf.NewDestinationXYZ(page, 0, 800, 1.0))
doc.Outlines().Add(chapter)
section := pdf.NewOutlineItemCollection(doc)
section.SetTitle("Installation")
section.SetDestination(pdf.NewDestinationFit(page))
chapter.Add(section)
doc.Save("manual_with_bookmarks.pdf")
Anotasi dan Stempel
AnnotationCollection menyimpan semua anotasi pada sebuah halaman. TextAnnotation menambahkan komentar catatan tempel. StampAnnotation menempatkan stempel persetujuan atau informasi menggunakan salah satu nilai StampName yang telah ditentukan. HighlightAnnotation menandai wilayah teks. RedactAnnotation secara permanen menghapus konten sensitif. LinkAnnotation melampirkan tindakan URI atau tujuan halaman ke wilayah yang dapat diklik.
doc, _ := pdf.Open("draft.pdf")
page, _ := doc.Page(1)
stamp := pdf.NewStampAnnotation(page, pdf.Rectangle{LLX: 100, LLY: 700, URX: 250, URY: 750}, pdf.StampNameApproved)
page.Annotations().Add(stamp)
doc.Save("draft_approved.pdf")
Panduan Cepat
Instal modul:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goAlur kerja minimal — buka PDF, enkripsi dengan kata sandi, dan simpan:
package main
import (
"fmt"
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)
func main() {
doc, err := pdf.Open("input.pdf")
if err != nil {
panic(err)
}
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "secret",
OwnerPassword: "ownerSecret",
Permissions: &pdf.Permissions{AllowPrint: true},
})
if err := doc.Save("output_encrypted.pdf"); err != nil {
panic(err)
}
fmt.Println("Saved output_encrypted.pdf")
}
Sumber Terbuka dan Lisensi
Aspose.PDF FOSS untuk Go dirilis di bawah lisensi MIT. Tidak ada pembatasan penggunaan, tidak ada biaya runtime, dan tidak ada persyaratan pendaftaran. Kode sumber tersedia di github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.
Penggunaan komersial diizinkan sesuai dengan ketentuan lisensi MIT. Jika proyek Anda memerlukan dukungan tingkat perusahaan, cakupan format yang diperluas, atau integrasi cloud, Aspose.PDF — Enterprise Product Family adalah penawaran komersial terpisah.