Wstęp

Aspose.PDF FOSS for Go jest czystą biblioteką Go do pracy z dokumentami PDF. Udostępnia API do tworzenia nowych PDF-ów od podstaw, otwierania i edytowania istniejących plików, dzielenia dokumentów na wyjścia po jednej stronie, scalania wielu PDF-ów oraz stosowania szyfrowania opartego na haśle — wszystko bez natywnych zależności C lub C++.

Biblioteka jest dostępna jako moduł Go pod adresem github.com/aspose-pdf-foss/aspose-pdf-foss-for-go i jest wydana na licencji MIT. Wymaga Go 1.24+.

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

Ten wpis opisuje podstawowe możliwości: operacje na dokumentach, bezpieczeństwo, wypełnianie AcroForm, układ tabel, zakładki i adnotacje.


Kluczowe funkcje

Dzielenie i scalanie dokumentów

Typ Document zapewnia Split() do podziału pliku PDF na dokumenty pojedynczych stron oraz Append() do scalania zewnętrznego dokumentu w miejscu. PageRange umożliwia pracę z podzbiorem stron w celu selektywnego wyodrębniania lub eksportu. Metadata udostępnia pola informacji o dokumencie do odczytu i zapisu autora, tytułu i daty utworzenia.

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")

Szyfrowanie hasłem i uprawnienia

EncryptionOptions konfiguruje hasło użytkownika, hasło właściciela i dozwolone operacje w jednym wywołaniu SetEncryption. Obsługiwane algorytmy to AES-128 (domyślny), AES-256 (ISO 32000-2, generuje wyjście PDF 2.0) oraz RC4-128 dla kompatybilności wstecznej. Permissions umożliwia zezwolenie lub odmowę poszczególnych operacji — drukowanie, kopiowanie, dostępność — niezależnie. OpenWithPassword otwiera zaszyfrowane pliki; RemoveEncryption usuwa hasło przed zapisaniem kopii w postaci czystego tekstu.

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 Przetwarzanie pola

Form zapewnia dostęp do wszystkich pól AcroForm w dokumencie. Field jest podstawowym interfejsem; asercje typów dają dostęp do TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField i ButtonField. Ustawiaj wartości pól po nazwie pola — przeglądarka automatycznie odtwarza ich wygląd za pomocą /NeedAppearances=true podczas zapisu.

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")

Układ tabeli

Table, Row i Cell tworzą strukturalne układy siatki na stronach PDF. BorderInfo konfiguruje styl obramowania dla każdej komórki lub całej tabeli. MarginInfo ustawia wcięcie komórki. TextStyle kontroluje czcionkę, rozmiar, kolor i wyrównanie za pomocą HAlign i VAlign. Image może być umieszczony w komórkach obok tekstu.

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")

Zakładki i nawigacja

OutlineItemCollection reprezentuje pojedynczy wpis zakładki. Użyj SetTitle, SetBold, SetColor i SetDestination, aby go skonfigurować. DestinationXYZ wskazuje dokładną współrzędną strony; DestinationFit dopasowuje stronę w przeglądarce. NamedDestinations rejestruje wielokrotnego użytku cele skoku dostępne po nazwie.

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")

Adnotacje i pieczątki

AnnotationCollection przechowuje wszystkie adnotacje na stronie. TextAnnotation dodaje komentarz w formie przypiętej notatki. StampAnnotation umieszcza pieczątkę zatwierdzającą lub informacyjną, używając jednej z predefiniowanych wartości StampName. HighlightAnnotation oznacza obszary tekstowe. RedactAnnotation trwale usuwa wrażliwe treści. LinkAnnotation dołącza akcje URI lub docelowe strony do klikanych obszarów.

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")

Szybki start

Zainstaluj moduł:

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

Minimalny przepływ pracy — otwórz plik PDF, zaszyfruj go hasłem i zapisz:

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")
}

Open Source i licencjonowanie

Aspose.PDF FOSS dla Go jest udostępniony na licencji MIT. Nie ma ograniczeń w użytkowaniu, opłat za uruchomienie ani wymogów rejestracji. Kod źródłowy jest dostępny pod adresem github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.

Komercyjne użycie jest dozwolone na warunkach licencji MIT. Jeśli Twój projekt wymaga wsparcia klasy enterprise, rozszerzonego wsparcia formatów lub integracji z chmurą, Aspose.PDF — Enterprise Product Family jest oddzielną ofertą komercyjną.


Rozpoczęcie

Powiązane zasoby