Introduzione

Aspose.PDF FOSS for Go è una libreria pure-Go per lavorare con documenti PDF. Espone un API per creare nuovi PDF da zero, aprire e modificare file esistenti, suddividere i documenti in output per pagina, unire più PDF e applicare la crittografia basata su password — il tutto senza dipendenze native C o C++.

La libreria è disponibile come modulo Go su github.com/aspose-pdf-foss/aspose-pdf-foss-for-go ed è rilasciata sotto licenza MIT. Richiede Go 1.24+.

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

Questo post copre le funzionalità principali: operazioni sui documenti, sicurezza, compilazione di AcroForm, layout di tabelle, segnalibri e annotazioni.


Caratteristiche principali

Suddivisione e unione dei documenti

Il tipo Document fornisce Split() per dividere un PDF in documenti per pagina e Append() per unire un documento esterno in loco. PageRange ti consente di lavorare con un sottoinsieme di pagine per estrazione o esportazione selettiva. Metadata espone i campi delle informazioni del documento per leggere e scrivere autore, titolo e data di creazione.

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

Crittografia con password e autorizzazioni

EncryptionOptions configura la password utente, la password proprietario e le operazioni consentite in una singola chiamata a SetEncryption. Gli algoritmi supportati sono AES-128 (predefinito), AES-256 (ISO 32000-2, produce output PDF 2.0) e RC4-128 per compatibilità legacy. Permissions ti permette di consentire o negare operazioni individuali — stampa, copia, accessibilità — in modo indipendente. OpenWithPassword apre file crittografati; RemoveEncryption rimuove la password prima di salvare una copia in chiaro.

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

Elaborazione del campo AcroForm

Form fornisce l’accesso a tutti i campi AcroForm in un documento. Field è l’interfaccia di base; le asserzioni di tipo danno accesso a TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField e ButtonField. Imposta i valori dei campi per nome del campo — il visualizzatore rigenera le apparizioni automaticamente tramite /NeedAppearances=true al salvataggio.

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

Layout della tabella

Table, Row e Cell costruiscono layout a griglia strutturati sulle pagine PDF. BorderInfo configura lo stile del bordo per cella o per l’intera tabella. MarginInfo imposta il padding della cella. TextStyle controlla il carattere, la dimensione, il colore e l’allineamento tramite HAlign e VAlign. Image può essere posizionato all’interno delle celle accanto al testo.

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

Segnalibri e navigazione

OutlineItemCollection rappresenta una singola voce di segnalibro. Usa SetTitle, SetBold, SetColor e SetDestination per configurarla. DestinationXYZ punta a una coordinata di pagina esatta; DestinationFit adatta la pagina nel visualizzatore. NamedDestinations registra destinazioni di salto riutilizzabili accessibili per nome.

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

Annotazioni e Timbri

AnnotationCollection contiene tutte le annotazioni su una pagina. TextAnnotation aggiunge un commento tipo sticky-note. StampAnnotation inserisce un timbro di approvazione o informativo usando uno dei valori predefiniti StampName. HighlightAnnotation evidenzia regioni di testo. RedactAnnotation rimuove in modo permanente contenuti sensibili. LinkAnnotation collega azioni URI o destinazione di pagina a regioni cliccabili.

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

Avvio rapido

Installa il modulo:

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

Un flusso di lavoro minimale — apri un PDF, cifralo con una password e salva:

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 e Licenze

Aspose.PDF FOSS per Go è rilasciato sotto licenza MIT. Non ci sono restrizioni d’uso, né costi di runtime, né requisiti di registrazione. Il codice sorgente è disponibile su github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.

L’uso commerciale è consentito ai sensi dei termini della licenza MIT. Se il tuo progetto richiede supporto di livello enterprise, copertura estesa dei formati o integrazione cloud, il Aspose.PDF — Enterprise Product Family è un’offerta commerciale separata.


Iniziare

Risorse correlate