Come caricare un documento in Go
Aspose.PDF FOSS per Go carica un PDF da un percorso di file, un io.Reader, o una delle due sorgenti protetta da una password, restituendo sempre un valore *Document su cui operare. La libreria è un modulo Go installato con go get.
Guida passo-passo
Passo 1: Installa il pacchetto
Aggiungi il modulo al tuo progetto:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goVerifica che il modulo venga risolto:
import asposepdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"Passo 2: Importa le classi necessarie
import (
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)Passo 3: Carica un PDF da un percorso file
pdf.Open carica un file PDF e restituisce un *Document e un errore:
doc, err := pdf.Open("testdata/4pages.pdf")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount(), "pages")Passo 4: Carica un PDF protetto da password
pdf.OpenWithPassword apre un file che è crittografato con una password utente:
doc, err := pdf.OpenWithPassword("locked.pdf", "secret")
if err != nil {
panic(err)
}
fmt.Println("opened:", doc.PageCount(), "pages")Passo 5: Carica un PDF da uno stream
pdf.OpenStream legge un PDF da qualsiasi io.Reader — una risposta di rete, un buffer in memoria o un file aperto separatamente. pdf.OpenStreamWithPassword è l’equivalente protetto da password per gli stream:
f, err := os.Open("input.pdf")
if err != nil {
panic(err)
}
defer f.Close()
doc, err := pdf.OpenStream(f)
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount(), "pages")
// For an encrypted stream, open a separate reader and pass a password:
f2, _ := os.Open("locked.pdf")
defer f2.Close()
doc2, err := pdf.OpenStreamWithPassword(f2, "secret")
if err != nil {
panic(err)
}
fmt.Println(doc2.PageCount(), "pages (encrypted)")Passo 6: Ispeziona il documento caricato
Una volta caricato, Document.PageCount segnala il numero totale di pagine e Document.Page(n) recupera una singola pagina tramite il suo indice basato su 1:
doc, err := pdf.Open("testdata/4pages.pdf")
if err != nil {
panic(err)
}
fmt.Printf("Page count: %d\n", doc.PageCount())
page, err := doc.Page(1)
if err != nil {
panic(err)
}
size, err := page.Size()
if err != nil {
panic(err)
}
fmt.Printf("Page 1 size: %.0f x %.0f pt\n", size.Width, size.Height)Problemi comuni e soluzioni
OpenWithPassword continua a fallire dopo aver inserito quella che credo sia la password corretta
Fornire una password errata a OpenWithPassword genera un errore non nullo. Le password distinguono maiuscole e minuscole — verifica la password utente esatta impostata sul PDF di origine.
OpenStream restituisce un errore su un PDF crittografato
OpenStream non può aprire PDF crittografati. Usa OpenStreamWithPassword per flussi protetti da password al suo posto.
Devo OpenWithPassword per un PDF che si scopre non essere crittografato?
No — l’apertura di un file non crittografato tramite OpenWithPassword è consentita e si comporta allo stesso modo di una chiamata Open semplice, quindi è sicuro utilizzare OpenWithPassword quando non sei certo che un file sia crittografato.
Document.Page(n) restituisce un errore dopo un’operazione riuscita Open
Il numero di pagina è fuori dall’intervallo. Page utilizza un indice basato su 1 compreso tra 1 e Document.PageCount(); chiama prima PageCount() per convalidare l’intervallo.
Domande Frequenti
Quali formati di file posso caricare con Open?
Open, OpenWithPassword, OpenStream e OpenStreamWithPassword accettano esclusivamente input PDF.
Come posso caricare un PDF che è già in memoria invece che su disco?
Avvolgi la slice di byte in un bytes.Reader (che soddisfa io.Reader) e passala a pdf.OpenStream, oppure a pdf.OpenStreamWithPassword se i byte rappresentano un PDF crittografato.
Come carico un PDF protetto da password?
Chiama pdf.OpenWithPassword(path, password) per un percorso file, o pdf.OpenStreamWithPassword(r, password) per uno stream.
Come verifico quante pagine sono state caricate?
Chiama Document.PageCount() sul *Document restituito.