Introduction
Ebben a bejegyzésben megtanulja, hogyan végezzen alapvető PDF dokumentumkezelési műveleteket Go-ban Aspose.A PDF FOSS: dokumentumok megnyitása és mentése, új PDF-ek létrehozása, egy dokumentumot oldalas fájlokra osztva, több PDF összeolvasása , az oldaltartományok kivonása valamint a dokumentumszámok olvasása vagy írása. Minden műveletet C vagy C ++ függőség nélkül lehet elérni.
A könyvtár egy Go modul a github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, A program MIT-licencben van, és Go 1.24 vagy újabb verzió szükséges. go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.
Ez a poszt az Európai Unió és a Szerződésekről szóló, 1993. július 1-jei Document, Page, PageRange,és a következők: DocumentInfo olyan típusúak, amelyek a következőket képezik: a dokumentumkezelés alapvető felülete.
Alapműveletek
Dokumentumok megnyitása és mentése
pdf.Open tölt egy PDF- t a lemeztől és visszaadja az e-mail címet. *Document. OpenWithPassword - Igen. a jelszóval védett fájlok esetében is. Document.Save visszaírja az eredményt a-ra. fájl útvonal. Document.WriteTo írja egy io.Writer memóriában vagy hálózaton belül forgatókönyvek.
// 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())
Új dokumentum létrehozása
pdf.NewDocument üres formátumot hoz létre. *Document.Használja. AddBlankPageFromFormat egy standard papírméretű üres lap hozzáadásához. PageFormat megadja a nevezett formátum állandóit (PageFormatA4, PageFormatLetter, stb.).
doc := pdf.NewDocumentFromFormat(pdf.PageFormatA4)
doc.Save("new_document.pdf")
Dokumentum felosztása
Document.Split PDF-t egyes oldalakra osztja. *Document értékek. A visszaküldött dokumentum pontosan egy oldalt tartalmaz, és önállóan menthető. hasznos a sorozatban generált jelentések felosztásához vagy az számlalapok elkülönítéséhez.
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))
Több PDF-t összevonás
Document.Append A második egyesül. *Document a fogadóba, csatolva Minden oldal a forrásból. Append többször is láncra szorítani a dokumentumokat, mielőtt az egyetlen Save.A forrásdokumentum nem módosított.
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")
Oldalak tartományának kivonása
PageRange Az alábbiak szerint a következők: From/To A mezőket átadja a Document.Extract hogy új *Document csak a kiválasztott anyagokat tartalmazó Ez hasznos a fejezetenkénti exportok vagy az olyan szerkesztett példányok létrehozásához, amelyek - Kihagyni bizonyos oldalakat.
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")
Dokumentum-metadatok olvasása és írása
Document.Info az a-t adja vissza. DocumentInfo szerkezeti expozíció Információs szótár mezők: Title, Author, Subject, Keywords, Creator, Producer, CreationDate,és a következők: ModDate.A mezőket közvetlenül módosítsa, majd hívja a következőt: Document.SetInfo a frissített struktúra visszaírása az elhívás előtt. 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")
Egyedi oldalak elérése
Document.Page(n) a) az alábbiakat veszi fel: *Page 1-es alapú index. Document.PageCount adományok A lapok feltárják a geometriai tulajdonságokat az oldalak olvasására és méret.
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)
Gyors kezdés
A modul telepítése: go get, majd futtassa a teljes példát az alábbiakban. A példa megnyitja A dokumentum egy forráskönyv, az első három oldalt új dokumentumba helyezi ki. Az eredeti szöveget frissíti. DocumentInfo Metadata mezőket, és mentse a eredményt a lemezen.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go
Egy teljes példa, amely megnyit egy dokumentumot, kivonja az 13 oldalt és a frissített metaadatokkal tárolja meg az eredményt:
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())
}
Nyitott forráskód és licenc
Aspose.PDF FOSS for Go is released under the MIT license. There are no usage restrictions, A forráskód elérhető a következő weboldalon: http://www.europa.eu/environmental_source-code/index.html github.com/aspose-pdf-foss/assose- pdf-Foss-for-go.