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
SetColor và SetColorStroke 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
ContentStreamBuildercho 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
SetAdvancedColorcho 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ân | Cá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ản | Thêm toán tử SetFont trước ShowText |
| Màu sắc hiển thị sai | Khô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ọa | Cặ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í sai | Thiếu hoặc ma trận biến đổi không đúng | Xá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ụngContentStreamBuilder để 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 / Method | Description |
|---|---|
OperatorCollection | Chuỗi các toán tử luồng nội dung trên một trang |
ContentStreamBuilder | Trì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.RestoreState | Lấ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 độ |
GraphicsState | Theo dõi ma trận biến đổi, màu sắc và trạng thái văn bản |
SetColor | Toán tử thiết lập màu không viền (tô) |
SetColorStroke | Toán tử thiết lập màu viền |
SetAdvancedColor | Toán tử cho không gian màu dạng mẫu / dựa trên ICC |
ShowText | Toán tử hiển thị một chuỗi văn bản |
SetTextMatrix | Toán tử định vị văn bản bằng ma trận |
ExtGState | Trạng thái đồ họa mở rộng (alpha, chế độ hòa trộn) |