Jak załadować dokument w Go
Aspose.PDF FOSS dla Go ładuje plik PDF z ścieżki pliku, io.Reader, lub dowolnego źródła chronionego hasłem, zawsze zwracając wartość *Document, na której można operować. Biblioteka jest modułem Go instalowanym za pomocą go get.
Przewodnik krok po kroku
Krok 1: Zainstaluj pakiet
Dodaj moduł do swojego projektu:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goZweryfikuj, że moduł się rozwiązuje:
import asposepdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"Krok 2: Importuj wymagane klasy
import (
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)Krok 3: Załaduj PDF z ścieżki pliku
pdf.Open ładuje plik PDF i zwraca *Document oraz błąd:
doc, err := pdf.Open("testdata/4pages.pdf")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount(), "pages")Krok 4: Załaduj PDF zabezpieczony hasłem
pdf.OpenWithPassword otwiera plik, który jest zaszyfrowany hasłem użytkownika:
doc, err := pdf.OpenWithPassword("locked.pdf", "secret")
if err != nil {
panic(err)
}
fmt.Println("opened:", doc.PageCount(), "pages")Krok 5: Załaduj PDF ze strumienia
pdf.OpenStream odczytuje PDF z dowolnego io.Reader — odpowiedzi sieciowej, bufora w pamięci lub pliku otwartego osobno. pdf.OpenStreamWithPassword jest równoważnym wariantem zabezpieczonym hasłem dla strumieni:
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)")Krok 6: Zbadaj załadowany dokument
Po załadowaniu, Document.PageCount raportuje całkowitą liczbę stron, a Document.Page(n) pobiera pojedynczą stronę według jej indeksu zaczynającego się od 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)Typowe problemy i rozwiązania
OpenWithPassword wciąż nie działa po wprowadzeniu tego, co uważam za prawidłowe hasło
Podanie nieprawidłowego hasła do OpenWithPassword skutkuje nie-pustym błędem (non-nil error). Hasła są rozróżniane pod względem wielkości liter — potwierdź dokładne hasło użytkownika ustawione w źródłowym pliku PDF.
OpenStream zwraca błąd przy zaszyfrowanym pliku PDF
OpenStream nie może otworzyć zaszyfrowanych plików PDF. Zamiast tego użyj OpenStreamWithPassword dla strumieni chronionych hasłem.
Czy potrzebuję OpenWithPassword dla pliku PDF, który okazuje się nie być zaszyfrowany?
Nie — otwieranie niezaszyfrowanego pliku za pomocą OpenWithPassword jest dozwolone i zachowuje się tak samo jak zwykłe wywołanie Open, więc bezpieczne jest użycie OpenWithPassword, gdy nie masz pewności, czy plik jest zaszyfrowany.
Document.Page(n) zwraca błąd po pomyślnym Open
Numer strony jest poza zakresem. Page używa indeksu zaczynającego się od 1, w przedziale od 1 do Document.PageCount(); najpierw wywołaj PageCount(), aby zweryfikować zakres.
Najczęściej zadawane pytania
Jakie formaty plików mogę wczytać za pomocą Open?
Open, OpenWithPassword, OpenStream i OpenStreamWithPassword przyjmują wyłącznie wejście w formacie PDF.
Jak wczytać PDF, który już znajduje się w pamięci, zamiast na dysku?
Opakuj wycinek bajtów w bytes.Reader (który spełnia io.Reader) i przekaż go do pdf.OpenStream, lub pdf.OpenStreamWithPassword, jeśli bajty reprezentują zaszyfrowany PDF.
Jak załadować PDF chroniony hasłem?
Wywołaj pdf.OpenWithPassword(path, password) dla ścieżki pliku, lub pdf.OpenStreamWithPassword(r, password) dla strumienia.
Jak sprawdzić, ile stron zostało załadowanych?
Wywołaj Document.PageCount() na zwróconym *Document.