Pertanyaan yang Sering Diajukan
Lisensi dan Sumber Terbuka
Apa lisensi untuk Aspose.PDF FOSS for Go?
Aspose.PDF FOSS untuk Go dirilis di bawah MIT License. Teks lisensi lengkap disertakan dalam repositori di github.com/aspose-pdf-foss/aspose-pdf-foss-for-go. Tidak diperlukan pendaftaran, file aktivasi, atau kunci runtime.
Bisakah saya menggunakan Aspose.PDF FOSS for Go dalam produk komersial?
Ya. Lisensi MIT mengizinkan penggunaan komersial tanpa batas, modifikasi, distribusi, dan penggunaan pribadi. Anda harus menyertakan pemberitahuan hak cipta dan teks lisensi MIT dalam semua salinan atau bagian signifikan dari perangkat lunak.
Apakah ada versi enterprise?
Aspose.PDF FOSS adalah edisi open-source berlisensi MIT. Produk komersial terpisah Aspose.PDF tersedia sebagai Aspose.PDF — Enterprise Product Family dengan dukungan enterprise, cakupan format yang diperluas, dan integrasi cloud.
Instalasi dan Persyaratan
Bagaimana cara menginstal Aspose.PDF FOSS untuk Go?
Tambahkan modul ke proyek Go Anda:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goImpor dengan alias di file sumber Anda:
import pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"Versi Go apa yang diperlukan?
Go 1.24 atau yang lebih baru diperlukan. Verifikasi versi Anda dengan go version.
Apakah ada ketergantungan pustaka native atau sistem?
No. Aspose.PDF FOSS untuk Go adalah implementasi murni-Go tanpa dependensi C, C++, atau CGo. Tidak memerlukan perpustakaan sistem, penampil PDF, atau alat eksternal.
API Usage
Bagaimana cara membuka PDF yang sudah ada?
Gunakan pdf.Open untuk PDF standar dan pdf.OpenWithPassword untuk file yang dilindungi kata sandi:
doc, err := pdf.Open("document.pdf")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount())Bagaimana cara memecah PDF menjadi halaman individual?
Document.Split mengembalikan []*Document, satu per halaman:
doc, _ := pdf.Open("report.pdf")
pages, _ := doc.Split()
for i, p := range pages {
p.Save(fmt.Sprintf("page_%03d.pdf", i+1))
}Bagaimana cara menggabungkan beberapa PDF?
Document.Append menggabungkan dokumen sumber di tempat:
base, _ := pdf.Open("part1.pdf")
part2, _ := pdf.Open("part2.pdf")
base.Append(part2)
base.Save("combined.pdf")Bagaimana cara mengisi bidang AcroForm?
Gunakan Document.Form().Field(name) dan periksa tipe konkret:
doc, _ := pdf.Open("form.pdf")
text := doc.Form().Field("customer_name").(*pdf.TextBoxField)
text.SetValue("Jane Doe")
check := doc.Form().Field("agree").(*pdf.CheckboxField)
check.SetChecked(true)
doc.Save("form_filled.pdf")Jenis bidang yang didukung: TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ButtonField.
Bagaimana cara menambahkan bookmark?
Buat OutlineItemCollection dan atur Destination:
doc, _ := pdf.Open("manual.pdf")
page, _ := doc.Page(1)
bm := pdf.NewOutlineItemCollection(doc)
bm.SetTitle("Chapter 1")
bm.SetDestination(pdf.NewDestinationXYZ(page, 0, 800, 1.0))
doc.Outlines().Add(bm)
doc.Save("manual_with_bookmarks.pdf")Keamanan dan Enkripsi
Bagaimana cara melindungi PDF dengan kata sandi?
Gunakan Document.SetEncryption dengan struktur EncryptionOptions untuk menerapkan perlindungan kata sandi dan flag izin. Berikan kata sandi pengguna untuk membuka file dan kata sandi pemilik untuk hak modifikasi:
doc, _ := pdf.Open("doc.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "userpass",
OwnerPassword: "ownerpass",
Permissions: &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("doc_protected.pdf")Algoritma enkripsi apa yang didukung?
Tiga algoritma tersedia melalui EncryptionOptions.Algorithm:
| Algorithm | Constant | Standard |
|---|---|---|
| AES-128 | EncryptionAlgAES128 (default) | ISO 32000-1 |
| AES-256 | EncryptionAlgAES256 | ISO 32000-2 (output PDF 2.0) |
| RC4-128 | EncryptionAlgRC4_128 | Legacy |
Bagaimana cara membuka file yang dilindungi kata sandi?
Gunakan pdf.OpenWithPassword ketika file memerlukan autentikasi. Berikan kata sandi pengguna sebagai argumen kedua; ia mengembalikan *Document normal setelah dekripsi berhasil:
doc, err := pdf.OpenWithPassword("protected.pdf", "userpass")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount())Bagaimana cara menghapus enkripsi dari PDF?
Panggil Document.RemoveEncryption setelah membuka file dengan kata sandi yang benar. Simpan hasilnya untuk menulis salinan yang tidak terenkripsi:
doc, _ := pdf.OpenWithPassword("protected.pdf", "userpass")
doc.RemoveEncryption()
doc.Save("decrypted.pdf")Rendering dan Teks
Bagaimana cara merender halaman PDF menjadi gambar?
Gunakan salah satu tipe perangkat: BmpDevice, PngDevice, JpegDevice, TiffDevice, atau GifDevice. Bangun perangkat dengan nilai Resolution dan panggil metode Render* yang sesuai dengan io.Writer dan RenderOptions:
doc, _ := pdf.Open("report.pdf")
page, _ := doc.Page(1)
f, _ := os.Create("page1.png")
defer f.Close()
page.RenderPNG(f, pdf.RenderOptions{DPI: 150})Bagaimana cara mencari teks dalam PDF?
Panggil Document.SearchText dengan string kueri dan SearchOptions. Hasilnya adalah slice nilai TextMatch — masing-masing berisi teks yang cocok, indeks halamannya, dan kotak pembatasnya.
doc, _ := pdf.Open("doc.pdf")
matches, _ := doc.SearchText("total", pdf.SearchOptions{CaseInsensitive: true})
for _, m := range matches {
fmt.Printf("page %d: %q\n", m.PageNumber, m.Text)
}Bagaimana cara meratakan formulir?
Panggil Document.Flatten setelah mengisi atau meninjau formulir. Metode ini menanam semua nilai bidang ke dalam grafik halaman dan menghapus bidang formulir interaktif:
doc, _ := pdf.Open("filled.pdf")
doc.Flatten()
doc.Save("flat.pdf")Keterbatasan yang Diketahui
Apakah semua fitur PDF didukung?
Perpustakaan ini mencakup operasi manajemen dokumen yang paling umum: membuka, membuat, menyimpan, memecah, menggabungkan, mengekstrak halaman, enkripsi, AcroForms, tabel, bookmark, anotasi, merender ke gambar, pencarian teks, dan perataan formulir. Fitur lanjutan seperti tanda tangan digital, konten 3D, dan konversi PDF/A mungkin belum sepenuhnya diimplementasikan pada rilis saat ini. Periksa README repositori untuk status fitur terkini.
Apa yang terjadi jika saya menggunakan asersi tipe bidang yang tidak cocok?
Asersi tipe pada Field yang tidak cocok dengan tipe bidang yang sebenarnya akan menyebabkan panic. Gunakan pdf.FieldType(f) untuk memeriksa tipe sebelum melakukan asersi, atau gunakan type switch:
doc, _ := pdf.Open("form.pdf")
for _, f := range doc.Form().Fields() {
switch v := f.(type) {
case *pdf.TextBoxField:
fmt.Println("text:", v.Value())
case *pdf.CheckboxField:
fmt.Println("checked:", v.Checked())
}
}