Introduction
Trong bài viết này, bạn sẽ tìm hiểu làm thế nào để thực hiện các hoạt động quản lý tài liệu PDF cốt lõi trong Go bằng cách sử dụng Aspose.PDF FOSS: mở và lưu tài sản, tạo ra các tập tin PDF mới, chia một tài khoản thành tệp mỗi trang, kết hợp nhiều tập thể PDF, lấy ranh giới trang và đọc hoặc viết dữ liệu tài chính. Tất cả các thao tác có sẵn mà không cần bất kỳ sự phụ thuộc C hoặc C++ bản địa nào.
Thư viện là một module để github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, MIT được cấp phép, và yêu cầu Go 1.24 hoặc sau. go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.
Bài viết này bao gồm các Document, Page, PageRange, và DocumentInfo Những hình thức này bề mặt quản lý tài liệu cơ bản.
Các hoạt động cơ bản
Mở và lưu tài liệu
pdf.Open tải PDF từ đĩa và trả về một *Document. OpenWithPassword làm tương tự với các tệp được bảo vệ bằng mật khẩu. Document.Save viết lại kết quả cho một file đường. Document.WriteTo viết cho một io.Writer - Trong bộ nhớ hoặc mạng kịch bản .
// 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())
Tạo một tài liệu mới
pdf.NewDocument tạo ra một cái trống *Document.Sử dụng AddBlankPageFromFormat để dán một trang trắng với kích thước giấy tiêu chuẩn. PageFormat Các hình thức liên tục (PageFormatA4, PageFormatLetter, vv ).
doc := pdf.NewDocumentFromFormat(pdf.PageFormatA4)
doc.Save("new_document.pdf")
Chia sẻ tài liệu
Document.Split chia PDF thành từng trang cá nhân *Document Giá trị: Mỗi tài liệu được trả lại chứa chính xác một trang và có thể được lưu trữ độc lập. hữu ích cho việc chia sẻ báo cáo được tạo ra bởi các bộ hoặc tách các trang hóa đơn.
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ích hợp nhiều PDF
Document.Append Kết hợp một thứ hai *Document vào vị trí nhận, mở rộng Tất cả các trang từ nguồn. gọi Append Lần lặp lại nhiều tài liệu trước khi Một đơn Save.Tài liệu nguồn không được sửa đổi.
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")
Tạo một Page Range
PageRange đại diện cho một phạm vi bao gồm (1-base, sử dụng From/To - Đánh giá: Pass ranges to Document.Extract để tạo ra một mới *Document Chỉ chứa những người được chọn Điều này hữu ích cho việc xây dựng xuất khẩu mỗi chương hoặc bản sao được chỉnh sửa mà bỏ qua một số trang.
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")
Đọc và viết tài liệu Metadata
Document.Info Trở lại a DocumentInfo Stretch Hiển thị Thông tin từ điển: Title, Author, Subject, Keywords, Creator, Producer, CreationDate, và ModDate.Thay đổi các trường trực tiếp, sau đó gọi Document.SetInfo viết lại cấu trúc cập nhật trước khi gọi điện thoại 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")
Truy cập các trang cá nhân
Document.Page(n) thu hồi a *Page Chỉ số 1 dựa trên chỉ số 1. Document.PageCount trở lại Tổng số trang. Pages tiết lộ các thuộc tính địa phương cho hộp đọc và kích thước .
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)
Khởi động nhanh
Cài đặt module với go get, sau đó chạy ví dụ đầy đủ bên dưới. ví mẫu mở ra tài liệu nguồn, lấy ra ba trang đầu tiên của nó vào một tài khoản mới, cập nhật các tài DocumentInfo Các trường metadata, và lưu kết quả vào đĩa.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go
Một ví dụ đầy đủ mở một tài liệu, lấy các trang 1-3 và lưu kết quả với dữ liệu metadata được cập nhật:
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())
}
Open Source và giấy phép
Aspose.PDF FOSS for Go is released under the MIT license. There are no usage restrictions, không có phí chạy, và không yêu cầu đăng ký. mã nguồn có sẵn tại: github.com/aspose-pdf-foss/sởi PDF-Foss-for-go.