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.


bắt đầu

Tài nguyên liên quan