Quản lý tài liệu PDF cốt lõi bao gồm các thao tác xuất hiện trong hầu hết mọi quy trình làm việc với PDF: mở hoặc tạo tài liệu, truy cập các trang và nội dung của chúng, đọc và ghi chú giải, trích xuất văn bản, và làm việc với các hành động tương tác. Aspose.PDF FOSS for .NET cung cấp một API .NET 8+ xử lý tất cả các nhiệm vụ này thông qua mô hình đối tượng nhất quán, tập trung vào các kiểu DocumentPage.

Vòng đời Tài liệu: Tạo, Mở, Lưu

Mỗi quy trình làm việc bắt đầu bằng việc tạo một tài liệu mới hoặc tải một tài liệu hiện có. Document.Create() trả về một thể hiện Document mới, trống. Document.Open(data) chấp nhận một byte[] hoặc Stream và phân tích cấu trúc PDF:

using var doc = Document.Create();
doc.Pages.Add();
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://aspose.com");
page.Annotations.AddLinkAnnotation(new Rectangle(50, 700, 200, 720), action);
using var ms = new MemoryStream();
doc.Save(ms);
ms.Position = 0;
using var doc2 = Document.Open(ms.ToArray());
var annot = (LinkAnnotation)doc2.Pages[1].Annotations[1];
Console.WriteLine(annot.Uri); // https://aspose.com

Đoạn mã này mở một tệp PDF tối thiểu, thêm một chú thích liên kết vào trang 1, lưu vào MemoryStream, và xác minh rằng chú thích được giữ lại sau khi tải lại. Phiên bản tải chồng Document.Save(Stream) ghi toàn bộ cấu trúc đã cập nhật; Document.ToArray() trả về các byte trực tiếp.


Truy cập Trang và Bộ sưu tập Trang

Các trang được truy cập thông qua thuộc tính Pages bằng chỉ mục nguyên số bắt đầu từ 1: doc.Pages[1] trả về trang đầu tiên, doc.Pages[doc.Pages.Count] trả về trang cuối cùng. Mỗi đối tượng Page cung cấp:

  • AnnotationsAnnotationCollection cho trang đó, hỗ trợ AddLinkAnnotation và việc liệt kê các chú thích hiện có theo loại.
  • Content stream operators — truy cập cấp thấp tới các lệnh vẽ trang thông qua bộ sưu tập Operators.

Chỉ mục bắt đầu từ 1 được duy trì nhất quán trong toàn bộ API: tra cứu chú thích, chỉ số trang đích của hành động GoTo, và tất cả các tham chiếu trang khác đều sử dụng cùng một quy ước.


Trích xuất văn bản với TextFragmentAbsorber

TextFragmentAbsorber là điểm vào chuẩn để đọc văn bản từ một trang PDF. Sử dụng hàm khởi tạo không đối số để trích xuất tất cả các đoạn, hoặc truyền một cụm từ tìm kiếm để lọc các văn bản phù hợp:

using var doc = Document.Open("path/to/document.pdf");
var absorber = new TextFragmentAbsorber("Hello");
absorber.Visit(doc.Pages[1]);
foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Found: {fragment.Text} size={fragment.FontSize}");
}

Gọi absorber.Visit(page) để xử lý một trang duy nhất. Bộ sưu tập TextFragments kết quả chứa TextFragment đối tượng; mỗi đối tượng cung cấp Text (nội dung chuỗi) và FontSize (kích thước điểm đã render). Một phiên bản tải chồng thứ hai TextFragmentAbsorber(searchPhrase, isRegex) chấp nhận cờ biểu thức chính quy cho tìm kiếm dựa trên mẫu.


Hành động tương tác

PdfAction là lớp nhà máy cho tất cả các loại hành động PDF tiêu chuẩn. Bốn phương thức tĩnh của nhà máy bao phủ các trường hợp phổ biến nhất:

  • PdfAction.CreateUri(uri) — mở một URL trong trình duyệt của người dùng.
  • PdfAction.CreateGoTo(pageIndex, fitType) — điều hướng đến một trang cụ thể trong tài liệu.
  • PdfAction.CreateJavaScript(script) — thực thi một chuỗi JavaScript trong trình xem PDF.
  • PdfAction.CreateLaunch(filePath) — khởi chạy một tệp hoặc ứng dụng bên ngoài.

Các hành động được gắn vào các trang thông qua chú thích. AnnotationCollection.AddLinkAnnotation(rectangle, action) đặt một LinkAnnotation lên vùng hình chữ nhật được chỉ định với hành động đã gắn kèm:

using var doc = Document.Create();
doc.Pages.Add();
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://example.org");
var annot = page.Annotations.AddLinkAnnotation(new Rectangle(10, 10, 100, 30), action);
Console.WriteLine(page.Annotations.Count);      // 1
Console.WriteLine(annot.AnnotationType);         // Link

AnnotationType.Link xác nhận chú thích đã được tạo dưới dạng liên kết. Hàm tạo Rectangle nhận các tọa độ left, bottom, right và top bằng đơn vị không gian người dùng PDF.


Siêu dữ liệu tài liệu và cấp phép

Lớp Document cung cấp IsLicensed (trả về true trong bản FOSS), JavaScript (một JavaScriptCollection cho các script cấp tài liệu), và DocumentActions cho các sự kiện vòng đời như BeforeClosingBeforeSaving.

Gói FOSS được cài đặt qua NuGet:

dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha

Không cần khóa giấy phép. Giấy phép MIT cho phép sử dụng trong các ứng dụng thương mại mà không yêu cầu ghi công ngoài việc bảo lưu thông báo giấy phép.


Bắt đầu

Tài nguyên liên quan