Kasus Penggunaan Umum untuk Aspose.PDF FOSS for Go

Kasus Penggunaan Umum untuk Aspose.PDF FOSS for Go

Aspose.PDF FOSS for Go adalah modul pure-Go untuk manajemen dokumen PDF. Artikel ini mencakup operasi yang paling sering dibutuhkan menggunakan tipe Document, Form, EncryptionOptions, Table, dan OutlineItemCollection.

go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go

Panduan Langkah-demi-Langkah

Langkah 1: Instal Paket

Tambahkan dependensi modul Go:

go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go

Langkah 2: Impor Paket

Gunakan alias untuk menjaga referensi impor tetap singkat:

import (
    "fmt"
    pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)

Langkah 3: Membagi PDF menjadi File Per-Halaman

Document.Split membagi dokumen multi halaman menjadi satu *Document per halaman.

doc, err := pdf.Open("report.pdf")
if err != nil {
    panic(err)
}
pages, _ := doc.Split()
for i, p := range pages {
    p.Save(fmt.Sprintf("report_page_%03d.pdf", i+1))
}
fmt.Printf("Split %d pages\n", len(pages))

Langkah 4: Menggabungkan Beberapa PDF menjadi Satu

Document.Append menggabungkan halaman dari dokumen kedua secara langsung sebelum disimpan.

base, _ := pdf.Open("intro.pdf")
chapter1, _ := pdf.Open("chapter1.pdf")
chapter2, _ := pdf.Open("chapter2.pdf")
appendix, _ := pdf.Open("appendix.pdf")

base.Append(chapter1)
base.Append(chapter2)
base.Append(appendix)
base.Save("full_document.pdf")

Langkah 5: Terapkan Enkripsi Kata Sandi

EncryptionOptions mengonfigurasi kata sandi pengguna, kata sandi pemilik, algoritma, dan per-operasi Permissions dalam satu panggilan:

doc, _ := pdf.Open("contract.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
    UserPassword:  "clientpass",
    OwnerPassword: "adminpass",
    Permissions:   &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("contract_protected.pdf")

Untuk menghasilkan salinan teks biasa dari file terenkripsi:

doc, _ := pdf.OpenWithPassword("contract_protected.pdf", "clientpass")
doc.RemoveEncryption()
doc.Save("contract_decrypted.pdf")

Langkah 6: Isi sebuah AcroForm

Iterasi atau targetkan bidang berdasarkan nama. Tegaskan tipe konkret (TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField).

doc, _ := pdf.Open("application_form.pdf")

name := doc.Form().Field("applicant_name").(*pdf.TextBoxField)
name.SetValue("Jane Doe")

agree := doc.Form().Field("terms_accepted").(*pdf.CheckboxField)
agree.SetChecked(true)

country := doc.Form().Field("country").(*pdf.ComboBoxField)
country.SetSelected(0)

doc.Save("application_filled.pdf")

Langkah 7: Bangun Tata Letak Tabel

Tambahkan Table dengan entri Row dan Cell ke halaman untuk pembuatan faktur atau laporan:

doc, _ := pdf.Open("invoice_template.pdf")
page, _ := doc.Page(1)

tbl := pdf.NewTable()
tbl.SetColumnWidths([]float64{200, 80, 100})

header := tbl.AddRow()
header.AddCell("Description")
header.AddCell("Qty")
header.AddCell("Amount")

row := tbl.AddRow()
row.AddCell("PDF Processing Service")
row.AddCell("1")
row.AddCell("$500.00")

page.AddTable(tbl, pdf.Rectangle{LLX: 72, LLY: 100, URX: 540, URY: 700})
doc.Save("invoice.pdf")

Langkah 8: Tambahkan Pohon Bookmark

OutlineItemCollection membuat bookmark dengan penumpukan bab/section dan target halaman DestinationXYZ:

doc, _ := pdf.Open("manual.pdf")
page1, _ := doc.Page(1)
page2, _ := doc.Page(2)

ch1 := pdf.NewOutlineItemCollection(doc)
ch1.SetTitle("Introduction")
ch1.SetBold(true)
ch1.SetDestination(pdf.NewDestinationXYZ(page1, 0, 792, 1.0))
doc.Outlines().Add(ch1)

ch2 := pdf.NewOutlineItemCollection(doc)
ch2.SetTitle("Configuration")
ch2.SetDestination(pdf.NewDestinationFit(page2))
doc.Outlines().Add(ch2)

doc.Save("manual_bookmarked.pdf")

Masalah Umum dan Solusi

pdf.Open mengembalikan kesalahan untuk file PDF yang valid Periksa bahwa jalur file sudah benar dan file tidak terbuka di proses lain. Pada Windows, penguncian file dapat mencegah pembacaan.

Panik akibat type assertion saat mengakses bidang formulir Gunakan pdf.FieldType(f) atau type switch untuk memeriksa tipe bidang sebelum melakukan assertion. Sebuah *pdf.TextBoxField assertion pada sebuah CheckboxField akan menyebabkan panic.

go get gagal dengan “module not found” Ensure GOPROXY diatur ke proxy yang dapat dijangkau (misalnya. GOPROXY=direct) dan bahwa jaringan Anda dapat mencapainya github.com. Dalam lingkungan yang terisolasi (air-gapped), gunakan GONOSUMCHECK atau cermin modul lokal.

SaveTo gagal setelah OpenWithPassword Jika Anda memanggil Save after OpenWithPassword tanpa memanggil RemoveEncryption, outputnya dienkripsi ulang dengan kata sandi asli. Ini adalah perilaku yang diharapkan — panggil RemoveEncryption secara eksplisit untuk menghasilkan salinan teks biasa.

Jumlah halaman dokumen yang digabung salah Append memodifikasi penerima secara langsung. Pastikan Anda tidak memanggil Append pada dokumen yang sudah disimpan; buka kembali dokumen dasar jika Anda perlu membuat beberapa output gabungan.


Pertanyaan yang Sering Diajukan

Apakah saya dapat memproses PDF tanpa menulis ke disk?

Document.WriteTo menerima sebuah io.Writer, sehingga Anda dapat menulis ke buffer, aliran jaringan, atau penulis respons tanpa membuat file sementara.

Apakah aman menggunakan Aspose.PDF FOSS untuk Go secara konkuren?

Setiap instance *Document tidak aman untuk goroutine. Gunakan satu Document per goroutine, atau lindungi instance yang dibagikan dengan mutex.

Bagaimana cara membaca kembali nilai field dari formulir yang telah diisi?

Gunakan Field.Value() pada field apa pun atau lakukan type-assert untuk mengakses accessor khusus tipe seperti CheckboxField.Checked() atau ComboBoxField.SelectedIndex().

Bisakah saya membuat PDF dari awal tanpa template yang ada?

Ya. pdf.NewDocument() membuat dokumen kosong. Panggil AddBlankPageFromFormat(pdf.PageFormatA4) untuk menambahkan halaman kosong, lalu tambahkan konten (tabel, anotasi, dll.) sebelum menyimpan.

Apa perbedaan antara Document.Save dan Document.WriteTo?

Save(path string) menulis ke jalur file. WriteTo(w io.Writer) menulis ke io.Writer apa pun — berguna untuk respons HTTP, buffer, atau pipeline aliran.


Lihat Juga

 Bahasa Indonesia