Các thao tác nội dung

Các thao tác nội dung

Thao tác nội dung

Các trang PDF được hiển thị bằng một chuỗi các toán tử được lưu trong một luồng nội dung. Aspose.PDF FOSS for .NET cung cấp các toán tử này thông qua OperatorCollection trên mỗi Page, và cung cấp ContentStreamBuilder để xây dựng nội dung mới theo chương trình.


Đọc các toán tử luồng nội dung

Mỗi Page có một thuộc tính Contents trả về một OperatorCollection. Lặp lại nó để kiểm tra từng toán tử.

using var doc = Document.Open(pdfBytes);
var page = doc.Pages[1];

foreach (var op in page.Contents)
{
    Console.WriteLine(op.ToString());
}

Xây dựng các luồng nội dung

ContentStreamBuilder cung cấp một API linh hoạt để xây dựng các chuỗi toán tử content-stream bao gồm quản lý trạng thái đồ họa, xây dựng đường dẫn, xuất văn bản và cài đặt màu sắc.

var builder = new ContentStreamBuilder();
builder.SaveState();
builder.SetFillColor(1.0, 0.0, 0.0);  // Red fill
builder.SetMatrix(1, 0, 0, 1, 72, 700); // Translate
// ... add drawing or text operators
builder.RestoreState();

Trạng thái đồ họa

GraphicsState theo dõi ma trận biến đổi hiện tại, trạng thái văn bản và các giá trị màu khi các toán tử được thực thi. Các thao tác chính:

var gs = new GraphicsState();
gs.Save();
gs.ConcatMatrix(new Matrix(1, 0, 0, 1, 100, 200));
gs.Restore();

Các toán tử màu

SetColorSetColorStroke thiết lập màu nền và màu viền tương ứng. Chúng chấp nhận các thành phần RGB, CMYK hoặc thang xám.

// RGB fill color (blue)
var fill = new SetColor(0, 0, 1);

// RGB stroke color (red)
var stroke = new SetColorStroke(1, 0, 0);

Các toán tử văn bản

ShowText hiển thị một chuỗi văn bản tại vị trí văn bản hiện tại bằng cách sử dụng phông chữ và kích thước hiện tại từ trạng thái đồ họa.

var textOp = new ShowText("Hello, PDF!");

SetTextMatrix định vị văn bản bằng cách xác định ma trận biến đổi cho không gian văn bản.


Trạng thái đồ họa mở rộng

ExtGState kiểm soát các thuộc tính render nâng cao như fill và stroke alpha (độ trong suốt) và chế độ hòa trộn.


Mẹo và Thực hành tốt nhất

  • Luôn ghép cặp SaveState / RestoreState (hoặc các toán tử q / Q) để tránh làm hỏng ngăn xếp trạng thái đồ họa.
  • Sử dụng ContentStreamBuilder cho nội dung mới thay vì tự tạo các đối tượng toán tử một cách thủ công.
  • Kiểm tra OperatorCollection ở chế độ chỉ đọc trước khi sửa đổi — các chuỗi toán tử không mong đợi có thể gây ra vấn đề hiển thị.
  • Các toán tử màu phải phù hợp với không gian màu hiện tại (RGB, CMYK hoặc thang xám).
  • Sử dụng SetAdvancedColor cho các không gian màu dựa trên mẫu và ICC.

Các vấn đề thường gặp

Vấn đềNguyên nhânCách khắc phục
Văn bản không hiển thị sau khi thêm các toán tửChưa đặt phông chữ trong trạng thái văn bảnThêm toán tử SetFont trước ShowText
Màu sắc hiển thị saiKhông khớp không gian màu (RGB so với CMYK)Sử dụng toán tử phù hợp với không gian màu đang hoạt động
Tràn ngăn xếp trạng thái đồ họaCặp Save / Restore không cân bằngĐảm bảo mỗi SaveState có một RestoreState tương ứng
Nội dung xuất hiện ở vị trí saiThiếu hoặc ma trận biến đổi không đúngXác minh giá trị SetMatrix hoặc ConcatMatrix

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

Dòng nội dung PDF là gì?

Luồng nội dung là một chuỗi các toán tử mô tả cách hiển thị một trang — vẽ đường, đặt văn bản, thiết lập màu sắc và quản lý trạng thái đồ họa.

Tôi có thể thêm nội dung mới vào một trang hiện có không?

Vâng. Truy cập page.Contents và thêm các toán tử mới, hoặc sử dụng
ContentStreamBuilder để tạo một chuỗi và nối nó.

Làm sao để làm cho văn bản trong suốt?

Sử dụng ExtGState để đặt alpha của phần tô (ca) thành giá trị nằm trong khoảng từ 0 (hoàn toàn trong suốt) đến 1 (hoàn toàn đục).


Tóm tắt Tham chiếu API

Class / MethodDescription
OperatorCollectionChuỗi các toán tử luồng nội dung trên một trang
ContentStreamBuilderTrình xây dựng dạng fluent để tạo chuỗi các toán tử
ContentStreamBuilder.SaveStateĐẩy trạng thái đồ họa hiện tại lên ngăn xếp
ContentStreamBuilder.RestoreStateLấy (pop) trạng thái đồ họa từ ngăn xếp
ContentStreamBuilder.SetFillColorĐặt màu tô trong không gian màu hiện tại
ContentStreamBuilder.SetMatrixÁp dụng phép biến đổi tọa độ
GraphicsStateTheo dõi ma trận biến đổi, màu sắc và trạng thái văn bản
SetColorToán tử thiết lập màu không viền (tô)
SetColorStrokeToán tử thiết lập màu viền
SetAdvancedColorToán tử cho không gian màu dạng mẫu / dựa trên ICC
ShowTextToán tử hiển thị một chuỗi văn bản
SetTextMatrixToán tử định vị văn bản bằng ma trận
ExtGStateTrạng thái đồ họa mở rộng (alpha, chế độ hòa trộn)

Xem thêm

 Tiếng Việt