सामग्री प्रवाह ऑपरेटर
यह गाइड दर्शाता है कि ContentStreamParser और ContentStreamBuilder का उपयोग करके Aspose.PDF FOSS में Java के लिए PDF सामग्री स्ट्रीम ऑपरेटरों तक कैसे पहुंचें और उन्हें संशोधित करें। आप कच्चे पृष्ठ सामग्री बाइट्स को पढ़ना और ड्राइंग कमांड्स का निरीक्षण करने के लिए पार्सर का उपयोग करना सीखेंगे।
सामग्री स्ट्रीम्स
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");
}