Quản lý tài liệu
Quản lý tài liệu
Document là đối tượng gốc trong Aspose.PDF FOSS cho .NET. Nó đại diện cho một
tệp PDF toàn bộ và cung cấp quyền truy cập vào các trang, siêu dữ liệu, trường biểu mẫu và tất cả
các cấu trúc PDF khác. Mở các tệp hiện có bằng Document.Open và tạo các
tệp mới bằng trình khởi tạo Document.
Mở và tạo tài liệu
// Open from a byte array
using var doc = Document.Open(File.ReadAllBytes("input.pdf"));
// Open from a file path
using var doc2 = new Document("input.pdf");
// Create a new empty document
using var newDoc = new Document();
newDoc.Pages.Add();
newDoc.Save("new.pdf");Làm việc với các trang
PageCollection quản lý các trang của tài liệu. Truy cập các trang bằng chỉ mục bắt đầu từ 1, thêm các trang mới hoặc xóa các trang hiện có.
using var doc = Document.Open(pdfBytes);
// Access first page
var page = doc.Pages[1];
// Add a blank page
var newPage = doc.Pages.Add();
// Get page count
int count = doc.Pages.Count;Hình học trang
Mỗi trang định nghĩa một số hộp bao. Sử dụng các phương thức setter trên Page để điều chỉnh chúng.
var page = doc.Pages[1];
page.SetMediaBox(new Rectangle(0, 0, 612, 792));
page.SetCropBox(new Rectangle(36, 36, 576, 756));
page.SetRotation(90);Lưu tài liệu
Lưu vào đường dẫn tệp, một luồng, hoặc một mảng byte.
// Save to file
doc.Save("output.pdf");
// Save to stream
using var ms = new MemoryStream();
doc.Save(ms);Tệp đính kèm
FileSpecification đại diện cho các tệp đính kèm nhúng trong PDF.
var spec = new FileSpecification("data.csv", "Embedded data file");
doc.EmbeddedFiles.Add(spec);Dấu ảnh
ImageStamp chồng một hình ảnh raster lên một trang tại vị trí được chỉ định.
var stamp = new ImageStamp("logo.png");
stamp.Put(doc.Pages[1]);
doc.Save("stamped.pdf");Bộ sưu tập toán tử
OperatorCollection trên mỗi trang chứa các toán tử content-stream thô. Sử dụng nó để kiểm tra hoặc thao tác nội dung ở mức độ thấp.
var ops = doc.Pages[1].Contents;
foreach (var op in ops)
{
// Inspect each operator
}Mẹo và Thực hành tốt nhất
- Bao bọc
Documenttrong một câu lệnhusingđể giải phóng các tay cầm tệp kịp thời. - Sử dụng
Document.Open(byte[])cho các quy trình làm việc trong bộ nhớ để tránh các vấn đề khóa tệp. - Chỉnh sửa các hộp trang (MediaBox, CropBox) trước khi thêm nội dung để đảm bảo không gian tọa độ chính xác.
- Gọi
Savechỉ một lần sau khi hoàn tất mọi sửa đổi — việc lưu lại nhiều lần chậm hơn nhưng an toàn. - Sử dụng
PageCollection.Accept(AnnotationSelector)để xử lý hàng loạt các chú thích trên tất cả các trang.
Các vấn đề thường gặp
| Issue | Cause | Fix |
|---|---|---|
Document.Open ném lỗi trên PDF hợp lệ | Tệp được mã hóa bằng mật khẩu | Cung cấp tham số mật khẩu trong hàm khởi tạo |
| Số trang là 0 sau khi khởi tạo | Document() mới bắt đầu rỗng | Gọi doc.Pages.Add() để thêm một trang trống |
| Tệp đã lưu lớn hơn mong đợi | Hình ảnh hoặc phông chữ được nhúng nhiều lần | Sử dụng tối ưu hoá (xem hướng dẫn Conversion and Optimization) |
Pages[0] ném lỗi chỉ mục | Các trang được đánh số bắt đầu từ 1, không phải 0 | Sử dụng Pages[1] cho trang đầu tiên |
Câu hỏi thường gặp
Làm thế nào để hợp nhất hai tài liệu PDF?
Sử dụng PdfFileEditor.Concatenate từ Facades API, hoặc sao chép thủ công các trang từ một tài liệu sang tài liệu khác bằng cách sử dụng PageCollection.
Tôi có thể mở PDF từ URL hoặc luồng không?
Có. Đọc nội dung URL vào một byte[] trước, sau đó truyền nó cho
Document.Open(byte[]).
Làm thế nào để xóa một trang?
Gọi doc.Pages.Delete(pageNumber) trong đó pageNumber được đánh số từ 1.
Document có an toàn với đa luồng không?
Không. Mỗi luồng nên làm việc với thể hiện Document riêng của nó.
Tóm tắt Tham chiếu API
| Class / Method | Description |
|---|---|
Document | Đối tượng PDF gốc; chứa các trang, siêu dữ liệu và trường biểu mẫu |
Document.Open | Phương thức tĩnh để mở PDF từ một mảng byte |
Document.Save | Chuỗi hoá tài liệu thành tệp hoặc luồng |
Page | Trang PDF đơn với nội dung, chú thích và hình học |
Page.SetMediaBox | Xác định hộp media của trang |
Page.SetCropBox | Xác định khu vực cắt hiển thị |
Page.SetRotation | Xoay trang theo 0, 90, 180 hoặc 270 độ |
PageCollection | Bộ sưu tập có thứ tự của các trang trong tài liệu |
PageCollection.Add | Thêm một trang trống |
OperatorCollection | Các toán tử luồng nội dung thô cho một trang |
FileSpecification | Bộ mô tả tệp đính kèm nhúng |
ImageStamp | Dấu ảnh phủ lên cho các trang |
XFormCollection | XObjects biểu mẫu có thể tái sử dụng trong tài liệu |