Πώς να φορτώσετε ένα έγγραφο σε Go
Aspose.PDF FOSS για Go φορτώνει ένα PDF από διαδρομή αρχείου, ένα io.Reader, ή οποιαδήποτε πηγή προστατευμένη με κωδικό πρόσβασης, επιστρέφοντας πάντα μια τιμή *Document για επεξεργασία. Η βιβλιοθήκη είναι ένα module Go που εγκαθίσταται με go get.
Οδηγός βήμα-βήμα
Βήμα 1: Εγκατάσταση του πακέτου
Προσθέστε το module στο πρότζεκτ σας:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goΕπαληθεύστε ότι το module επιλύεται:
import asposepdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"Βήμα 2: Εισαγωγή Απαιτούμενων Κλάσεων
import (
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)Βήμα 3: Φόρτωση PDF από Διαδρομή Αρχείου
pdf.Open φορτώνει ένα αρχείο PDF και επιστρέφει ένα *Document και ένα σφάλμα:
doc, err := pdf.Open("testdata/4pages.pdf")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount(), "pages")Βήμα 4: Φόρτωση PDF με κωδικό πρόσβασης
pdf.OpenWithPassword ανοίγει ένα αρχείο που είναι κρυπτογραφημένο με κωδικό χρήστη:
doc, err := pdf.OpenWithPassword("locked.pdf", "secret")
if err != nil {
panic(err)
}
fmt.Println("opened:", doc.PageCount(), "pages")Βήμα 5: Φόρτωση PDF από Ροή
pdf.OpenStream διαβάζει ένα PDF από οποιοδήποτε io.Reader — μια απάντηση δικτύου, μια ενδιάμεση μνήμη, ή ένα αρχείο που ανοίχθηκε χωριστά. pdf.OpenStreamWithPassword είναι το ισοδύναμο με προστασία κωδικού για ροές:
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)")Βήμα 6: Εξέταση του Φορτωμένου Εγγράφου
Μόλις φορτωθεί, Document.PageCount αναφέρει τον συνολικό αριθμό σελίδων και το Document.Page(n) ανακτά μία σελίδα με βάση τον δείκτη που ξεκινά από 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)Κοινά Προβλήματα και Διορθώσεις
OpenWithPassword ακόμη αποτυγχάνει μετά την εισαγωγή αυτού που πιστεύω ότι είναι ο σωστός κωδικός πρόσβασης
Η παροχή ενός λανθασμένου κωδικού πρόσβασης στο OpenWithPassword οδηγεί σε σφάλμα μη μηδενικό. Οι κωδικοί πρόσβασης διακρίνουν πεζά-κεφαλαία — επιβεβαιώστε τον ακριβή κωδικό χρήστη που έχει οριστεί στο πηγαίο PDF.
OpenStream επιστρέφει σφάλμα σε ένα κρυπτογραφημένο PDF
OpenStream δεν μπορεί να ανοίξει κρυπτογραφημένα PDF. Χρησιμοποιήστε το OpenStreamWithPassword για ροές προστατευμένες με κωδικό πρόσβασης αντί αυτού.
Χρειάζομαι OpenWithPassword για ένα PDF που αποδεικνύεται ότι δεν είναι κρυπτογραφημένο;
Όχι — το άνοιγμα ενός μη κρυπτογραφημένου αρχείου μέσω του OpenWithPassword επιτρέπεται και λειτουργεί όπως μια απλή κλήση Open, οπότε είναι ασφαλές να χρησιμοποιήσετε το OpenWithPassword όταν δεν είστε σίγουροι αν το αρχείο είναι κρυπτογραφημένο.
Document.Page(n) επιστρέφει σφάλμα μετά από μια επιτυχημένη Open
Ο αριθμός σελίδας είναι εκτός εύρους. Το Page χρησιμοποιεί δείκτη που αρχίζει από 1 μεταξύ 1 και Document.PageCount(); καλέστε πρώτα το PageCount() για να επαληθεύσετε το εύρος.
Συχνές Ερωτήσεις
Ποια μορφές αρχείων μπορώ να φορτώσω με το Open;
Open, OpenWithPassword, OpenStream και OpenStreamWithPassword δέχονται αποκλειστικά είσοδο PDF.
Πώς μπορώ να φορτώσω ένα PDF που είναι ήδη στη μνήμη αντί να βρίσκεται στον δίσκο;
Τυλίξτε το κομμάτι byte σε ένα bytes.Reader (που ικανοποιεί το io.Reader) και περάστε το στο pdf.OpenStream, ή στο pdf.OpenStreamWithPassword εάν τα bytes αντιπροσωπεύουν κρυπτογραφημένο PDF.
Πώς μπορώ να φορτώσω ένα PDF προστατευμένο με κωδικό πρόσβασης;
Καλέστε pdf.OpenWithPassword(path, password) για διαδρομή αρχείου, ή pdf.OpenStreamWithPassword(r, password) για ροή.
Πώς μπορώ να ελέγξω πόσες σελίδες φορτώθηκαν;
Καλέστε Document.PageCount() στο επιστραφέν *Document.