Cách tải tài liệu trong Go

Cách tải tài liệu trong Go

Aspose.PDF FOSS cho Go tải một PDF từ đường dẫn tệp, một io.Reader, hoặc bất kỳ nguồn nào được bảo vệ bằng mật khẩu, luôn trả về một giá trị *Document để thao tác. Thư viện là một mô-đun Go được cài đặt bằng go get.

Hướng dẫn từng bước

Bước 1: Cài đặt gói

Thêm mô-đun vào dự án của bạn:

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

Xác minh mô-đun được giải quyết:

import asposepdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"

Bước 2: Nhập các lớp cần thiết

import (
	pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)

Bước 3: Tải PDF từ đường dẫn tệp

pdf.Open tải một tệp PDF và trả về một *Document và một lỗi:

doc, err := pdf.Open("testdata/4pages.pdf")
if err != nil {
	panic(err)
}
fmt.Println(doc.PageCount(), "pages")

Bước 4: Tải PDF được bảo vệ bằng mật khẩu

pdf.OpenWithPassword mở một tệp được mã hoá bằng mật khẩu người dùng:

doc, err := pdf.OpenWithPassword("locked.pdf", "secret")
if err != nil {
	panic(err)
}
fmt.Println("opened:", doc.PageCount(), "pages")

Bước 5: Tải PDF từ luồng

pdf.OpenStream đọc một PDF từ bất kỳ io.Reader nào — phản hồi mạng, bộ đệm trong bộ nhớ, hoặc tệp được mở riêng biệt. pdf.OpenStreamWithPassword là phiên bản có bảo vệ mật khẩu cho các luồng:

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

Bước 6: Kiểm tra tài liệu đã tải

Sau khi được tải, Document.PageCount báo cáo tổng số trang và Document.Page(n) lấy một trang duy nhất theo chỉ mục bắt đầu từ 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)

Các vấn đề thường gặp và cách khắc phục

OpenWithPassword vẫn thất bại sau khi tôi nhập những gì tôi tin là mật khẩu đúng

Cung cấp mật khẩu không chính xác cho OpenWithPassword sẽ gây ra lỗi không rỗng. Mật khẩu phân biệt chữ hoa và chữ thường — hãy xác nhận mật khẩu người dùng chính xác được đặt trên PDF nguồn.

OpenStream trả về lỗi trên một PDF được mã hoá

OpenStream không thể mở các PDF được mã hóa. Thay vào đó, hãy sử dụng OpenStreamWithPassword cho các luồng được bảo vệ bằng mật khẩu.

Tôi có cần OpenWithPassword cho một PDF mà không bị mã hoá?

Không — việc mở một tệp không được mã hoá qua OpenWithPassword được cho phép và hoạt động giống như một cuộc gọi Open thông thường, vì vậy bạn có thể an toàn sử dụng OpenWithPassword khi không chắc tệp có được mã hoá hay không.

Document.Page(n) trả về lỗi sau khi thành công Open

Số trang vượt ngoài phạm vi. Page sử dụng chỉ mục bắt đầu từ 1 trong khoảng từ 1 đến Document.PageCount(); hãy gọi PageCount() trước để xác minh phạm vi.


Câu hỏi thường gặp

Tôi có thể tải những định dạng tệp nào với Open?

Open, OpenWithPassword, OpenStream và OpenStreamWithPassword đều chỉ chấp nhận đầu vào PDF.

Làm thế nào để tải một PDF đã có trong bộ nhớ thay vì trên đĩa?

Bao bọc đoạn byte trong một bytes.Reader (đáp ứng io.Reader) và truyền nó cho pdf.OpenStream, hoặc pdf.OpenStreamWithPassword nếu các byte đại diện cho một PDF được mã hoá.

Làm thế nào để tải một PDF được bảo vệ bằng mật khẩu?

Gọi pdf.OpenWithPassword(path, password) cho đường dẫn tệp, hoặc pdf.OpenStreamWithPassword(r, password) cho luồng.

Làm thế nào để kiểm tra số trang đã được tải?

Gọi Document.PageCount() trên *Document được trả về.

Xem thêm

 Tiếng Việt