Оператори потоку контенту
Цей керівництво показує, як отримати доступ і маніпулювати контентом PDF потоків операторів з використанням ContentStreamParser і ContentStreamBuilder в Aspose.PDF FOSS для Java. Ви навчитеся читати байт чистій вміст сторінки і використовувати аналізатор для перевірки малюнку команд.
Потоки контенту
Зміст PDF-сторінки кодується як послідовність операторів в потоці контенту. Page надає доступ до своїх операторів контенту через getContents() майно.
ContentStreamParser
ContentStreamParser аналізує байти потоку сирого вмісту в об’єкти операторів, Продавати сирі байти з page.getContents().toByteArray() до конструктора аналізу:
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 створює нові потоки контенту для вбудову в Page. Використання ContentStreamBuilder при конструюванні вмісту сторінки програмно, а не Після створення потоку, призначати його назад до потокового файлу. сторінку і зберегти документ.
Референція оператора
Оператори потоку контенту PDF визначені в ISO 32000-1:2008, таблиця A.1. оператори включають текстові (BT, ET, Tf, Tj), оператори графічного стану (q, Q, cm), а також операторів маршрутів (m, l, h, f, S).
Оператори потоків контенту дотримуються специфікації PDF (ISO 32000-1:2008, §8). Використання ContentStreamParser для повторювання операторів в існуючому потоці.
Доступ до матеріалу без обробки сторінки
Щоб прочитати сирі байти потоку змісту сторінки, подзвонить: page.getContents().toByteArray(). Потім байти можуть бути оглянуті, декодовані або передані до 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");
}