Content Stream Operator - Các nhà điều hành nội dung
Hướng dẫn này cho thấy cách truy cập và thao tác các nhà điều hành lưu lượng nội dung PDF bằng cách sử dụng ContentStreamParser và ContentStreamBuilder trong Aspose.PDF FOSS cho Java. Bạn sẽ học cách đọc các byte nội dung trang nguyên và sử dụng parser để kiểm tra bản vẽ. lệnh .
Content Streams Đánh giá
Nội dung của trang PDF được mã hóa như một chuỗi các nhà điều hành trong dòng nội dung. Page cung cấp quyền truy cập cho các nhà điều hành nội dung của mình thông qua getContents() tài sản .
ContentStreamParser
ContentStreamParser phân đoạn các byte dòng nội dung thô vào đối tượng vận hành, cho phép kiểm tra lập trình của các lệnh vẽ trang. vượt qua các byte thô từ page.getContents().toByteArray() Đối với nhà xây dựng parser:
try (Document doc = new Document("input.pdf")) {
PageCollection pages = doc.getPages();
Page page = pages.get(1);
byte[] contentBytes = page.getContents().toByteArray();
ContentStreamParser parser = new ContentStreamParser(contentBytes);
// Iterate over parsed operators
}ContentStreamBuilder
ContentStreamBuilder tạo ra các dòng nội dung mới để tích hợp trong một Page. Sử dụng ContentStreamBuilder Khi xây dựng nội dung trang lập trình thay vì thay đổi một dòng hiện có. Sau khi xây dựng dòng, gán nó trở lại với dòng Trang và lưu tài liệu.
Reference Nhà điều hành
Các nhà điều hành dòng nội dung PDF được xác định trong ISO 32000-1:2008, bảng A.1. Các nhà khai thác bao gồm các nhà quản lý văn bản (BT, ET, Tf, TjCác nhà khai thác đồ họa (q, Q, cmCác nhà điều hành đường (m, l, h, f, S).
Các nhà điều hành dòng nội dung tuân theo thông số kỹ thuật PDF (ISO 32000-1:2008, §8). Sử dụng ContentStreamParser để iterate trên các nhà khai thác trong một dòng hiện có.
Truy cập Raw Page Content
Để đọc các byte thô của một dòng nội dung trang, gọi page.getContents().toByteArray(). Các byte sau đó có thể được kiểm tra, giải mã hoặc chuyển sang ContentStreamParser:
try (Document doc = new Document("input.pdf")) {
PageCollection pages = doc.getPages();
Page page = pages.get(1);
byte[] contentBytes = page.getContents().toByteArray();
System.out.println("Content stream size: " + contentBytes.length + " bytes");
}