Εισαγωγή

Σε αυτό το άρθρο, θα μάθετε πώς να εκτελέσετε βασικές εργασίες διαχείρισης εγγράφων PDF στο Go χρησιμοποιώντας Aspose.PDF FOSS: ανοίξτε και αποθηκεύστε έγγραφα, δημιουργήστε νέα PDFs, χωρίστε ένα έγραφο σε αρχεία ανά σελίδα, συγχωνεύστε πολλαπλά PDF, εξάγετε τις γραμμές σελίδας και διαβάζετε ή γράψτε τα μεταδεδομένα του εδάφους.

Η βιβλιοθήκη είναι ένα ενότητα για να github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, MIT άδεια, και απαιτεί Go 1.24 ή αργότερα. go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.

Το παρόν άρθρο καλύπτει την Document, Page, PageRange,και DocumentInfo Οι τύποι που σχηματίζουν Η επιφάνεια διαχείρισης κεντρικών εγγράφων.


Κύρια επιχειρήσεις

Ανοίγοντας και αποθηκεύοντας έγγραφα

pdf.Open Κατεβάστε ένα PDF από το δίσκο και επιστρέψετε μια *Document. OpenWithPassword ΚΑΝΕΙ Το ίδιο ισχύει και για τα αρχεία που προστατεύονται από κωδικούς πρόσβασης. Document.Save Το αποτέλεσμα επιστρέφει στο Πληροφορίες για το δρόμο. Document.WriteTo Γράφει σε ένα io.Writer για μνήμη ή δίκτυο Σενάριο .

// 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())

Δημιουργία νέου εγγράφου

pdf.NewDocument Δημιουργεί ένα κενό *Document.Χρησιμοποιήστε AddBlankPageFromFormat να προσθέσετε μια λευκή σελίδα με ένα τυποποιημένο μέγεθος χαρτιού. PageFormat Η διατύπωση των παραγόντων (PageFormatA4, PageFormatLetter,και ούτω καθεξής).

doc := pdf.NewDocumentFromFormat(pdf.PageFormatA4)

doc.Save("new_document.pdf")

Διαχωρισμός ενός εγγράφου

Document.Split Διαχωρίζετε ένα PDF σε μεμονωμένες σελίδες *Document Αξίες - Κάθε Το επιστρεφόμενο έγγραφο περιέχει ακριβώς μία σελίδα και μπορεί να αποθηκευτεί ανεξάρτητα. Είναι χρήσιμο για τη διανομή αναφορών που παράγονται από συρτάρια ή για την αποσύνδεση σελίδων τιμολόγησης.

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

Εμφάνιση πολλαπλών PDFs

Document.Append ΕΝΟΜΙΖΕΙ ΤΟ ΔΥΤΟ *Document στο χώρο του παραλήπτη, με την προσθήκη Όλα τα άρθρα από την πηγή.Καλέστε Append Επαναλαμβανόμενη συλλογή πολλών εγγράφων πριν από την Μία μοναχική Save.Το αρχείο προέλευσης δεν τροποποιείται.

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

Εξαγωγή μιας σελίδας εύρος

PageRange Η χρήση ενός ενσωματωμένου εύρους (1-based, χρησιμοποιώντας From/To Προς τα πέρατα, οι ράγες Document.Extract Να παράγει ένα νέο *Document Περιέχει μόνο τα επιλεγμένα Αυτό είναι χρήσιμο για την κατασκευή εξαγωγών ανά κεφάλαιο ή γραμμένων αντιγράφων που Αρκετές σελίδες ξεχνάμε.

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

Διαβάστε και γράψτε τα μεταδεδομένα εγγράφων

Document.Info Επιστρέφει ο Α DocumentInfo Στρατηγική έκθεση Ενημερωτικά πεδία λεξιλόγου: Title, Author, Subject, Keywords, Creator, Producer, CreationDate,και ModDate.Αλλαγή των πεδίων απευθείας, στη συνέχεια καλέστε Document.SetInfo Να γράψετε το ενημερωμένο δοχείο πίσω πριν καλέσετε 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")

Εισαγωγή μεμονωμένων σελίδων

Document.Page(n) Επαναλάβει A *Page Με βάση τον δείκτη 1. Document.PageCount Επιστροφή Οι σελίδες εκθέτουν τις ιδιοτήτες γεωμετρίας για τα κουτιά ανάγνωσης και Μεγάλες .

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)

Γρήγορη έναρξη

Ενεργοποιήστε το module με go get, στη συνέχεια, εκτελέστε το πλήρες παράδειγμα παρακάτω. το παράδειγμά σας ανοίγει ένα αρχικό έγγραφο, εκχύλισε τις πρώτες τρεις σελίδες του σε νέο έδαφος, ενημερώθηκε το DocumentInfo Τα πεδία μεταμένων, και αποθηκεύει το αποτέλεσμα στο δίσκο.

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

Ένα πλήρες παράδειγμα που ανοίγει ένα έγγραφο, εξάγει σελίδες 1 έως 3 και αποθηκεύει το αποτέλεσμα με ενημερωμένα μεταδεδομένα:

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

Ανοικτή Πηγή και Άδεια Χρήσης

Aspose.PDF FOSS for Go is released under the MIT license. There are no usage restrictions, Δεν υπάρχουν χρεώσεις λειτουργίας, ούτε απαιτήσεις εγγραφής.Ο κώδικας πηγής είναι διαθέσιμος στο github.com/αποστροφή-pdf-foss/Αποκτροφή - pdf-for-go.


Ξεκινώντας

Σχετικοί Πόροι