Uvod u članak
U ovom članku, naučit ćete kako obavljati osnovne PDF operacije upravljanja dokumentima u Go-u koristeći Aspose.PDF FOSS: otvaranje i čuvanje dokumenata, stvaranje novih PDF-ova, razdvajanje dokumenta na datoteke po stranici, spajanja više PDF dokumenati, ekstrakcija raspona stranica te čitanje ili pisanje metapodataka dokumenta. Sve operaciju su dostupne bez bilo kakvih izvornih ovisnosti C ili C ++.
Biblioteka je Go modul na github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, MIT licenciran, i zahtijeva Go 1.24 ili noviji. Instalirajte s go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.
Ovaj članak obuhvaća: Document, Page, PageRange, i DocumentInfo vrste koje se formiraju U ovom slučaju, u skladu s člankom 25. stavkom 1. točkom (a) i podstavkom 2.
Osnovne operacije
Otvaranje i pohranjivanje dokumenata
pdf.Open učita PDF s diska i vraća a *Document. OpenWithPassword radi Isto je i za datoteke koje su zaštitljene lozinkom. Document.Save piše rezultat natrag na a. Puta datoteke. Document.WriteTo Piše na… io.Writer za u-memoriju ili mrežu scenarije.
// Open a standard PDF
doc, err := pdf.Open("input.pdf")
if err != nil {
panic(err)
}
// Open an encrypted PDF
protected, err := pdf.OpenWithPassword("locked.pdf", "userpassword")
if err != nil {
panic(err)
}
// Save to a new path
err = doc.Save("output.pdf")
fmt.Println(protected.PageCount())
Stvaranje novog dokumenta
pdf.NewDocument stvara prazan prostor. *Document.- Koristi. AddBlankPageFromFormat Pridružiti prazan stranicu standardne veličine papira. PageFormat daje imenovane konstante formata (PageFormatA4, PageFormatLetter, itd.).
doc := pdf.NewDocumentFromFormat(pdf.PageFormatA4)
doc.Save("new_document.pdf")
Razdijeđenje dokumenta
Document.Split podijeli PDF u pojedinačne stranice *Document Svaka vrijednost. Vraćeni dokument sadrži točno jednu stranicu i može se čuvati nezavisno. U tom slučaju, u skladu s člankom 13. stavkom 1. točkom (a) Uredbe (EU) br. 575/2013 i Uredbom (EZ) št. 1071/2006 trebalo bi se primjenjivati na:.
doc, _ := pdf.Open("multi_page.pdf")
pages, err := doc.Split()
if err != nil {
panic(err)
}
for i, p := range pages {
filename := fmt.Sprintf("page_%03d.pdf", i+1)
if err := p.Save(filename); err != nil {
fmt.Printf("Failed to save page %d: %v\n", i+1, err)
}
}
fmt.Printf("Split into %d pages\n", len(pages))
Spajanje više PDF-ova
Document.Append spaja se s drugom. *Document U prijemniku na mjestu, priloga Sve stranice iz izvora. Append više puta da se poveže nekoliko dokumenata prije nego što je Jednostavno. Save.Izvorni dokument nije modificiran.
base, _ := pdf.Open("report_intro.pdf")
section1, _ := pdf.Open("section1.pdf")
section2, _ := pdf.Open("section2.pdf")
appendix, _ := pdf.Open("appendix.pdf")
base.Append(section1)
base.Append(section2)
base.Append(appendix)
base.Save("complete_report.pdf")
Izvaditi raspon stranica
PageRange U ovom slučaju, u skladu s člankom 21. stavkom 1. točka (a) Uredbe (EU) br. 1303/2013 i Uredbom (EZ) št. 1072/2009 treba uvesti sljedeće: From/To Prenesi opseg na: Document.Extract da proizvede novi *Document sadržava samo odabrane: Ovo je korisno za izgradnju izvoza po poglavlju ili redigiranih kopija koje su u potpunosti povezane s člankom. Izbjegavajte određene stranice.
doc, _ := pdf.Open("long_report.pdf")
// Extract pages 3 through 7
subset, err := doc.Extract(pdf.PageRange{From: 3, To: 7})
if err != nil {
panic(err)
}
subset.Save("pages_3_to_7.pdf")
Čitanje i pisanje metapodataka dokumenta
Document.Info vraća a DocumentInfo Izloženost strukture Informacijske polja za rječnik: Title, Author, Subject, Keywords, Creator, Producer, CreationDate, i ModDate.- Promjenite polja direktno, onda pozovete. Document.SetInfo da napiše ažurirani struktur natrag prije poziva Save.
doc, _ := pdf.Open("report.pdf")
info, _ := doc.Info()
// Read current values
fmt.Printf("Title: %s\nAuthor: %s\n", info.Title, info.Author)
// Update fields
info.Title = "Annual Report 2026"
info.Author = "Finance Team"
info.Keywords = "annual, report, finance, 2026"
doc.SetInfo(info)
doc.Save("report_updated.pdf")
Pristup pojedinačnim stranicama
Document.Page(n) -Primite: *Page po indeksu na bazi 1. Document.PageCount povratni podaci U ovom slučaju, u skladu s člankom 2. stavkom 1. točka (a) točke (b) ovog članka, se može koristiti i broj stranica. veličine.
doc, _ := pdf.Open("document.pdf")
fmt.Printf("Page count: %d\n", doc.PageCount())
page, _ := doc.Page(1)
size, err := page.Size()
if err != nil {
panic(err)
}
fmt.Printf("Page 1 size: %.0f x %.0f pt\n", size.Width, size.Height)
Brzi početak
Instaliraj modul s: go get, zatim pokrenite kompletan primjer ispod. Primjer se otvara izvorni dokument, izvlači prve tri stranice u novi dokument i ažurira podatke iz prvog dokumenta. DocumentInfo Metapodatke polja, i čuva rezultat na disku.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go
Kompletni primjer koji otvara dokument, izvlači stranice 13 i čuva rezultat s ažuriranim metapodatkom:
package main
import (
"fmt"
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)
func main() {
// Open source document
src, err := pdf.Open("source.pdf")
if err != nil {
panic(err)
}
// Extract pages 1-3
subset, err := src.Extract(pdf.PageRange{From: 1, To: 3})
if err != nil {
panic(err)
}
// Update metadata
info, _ := subset.Info()
info.Title = "Pages 1-3 Extract"
info.Author = "Document Pipeline"
subset.SetInfo(info)
if err := subset.Save("extract_pages_1_3.pdf"); err != nil {
panic(err)
}
fmt.Printf("Saved %d pages\n", subset.PageCount())
}
Otvoreni izvor i licenciranje
Aspose.PDF FOSS for Go is released under the MIT license. There are no usage restrictions, Izvorni kod je dostupan na stranici: http://www.europa.eu/environmental_source-code/index.html Github.com/aspose-pdf-foss/asspose - pdf- foss-for-go.