कोर API
कोर API
यह गाइड दिखाता है कि Document और Page क्लासों के साथ PDF दस्तावेज़ों को कैसे खोलें, संपादित करें, संयोजित करें, और सहेजें — Aspose.PDF FOSS for TypeScript में प्रत्येक ऑपरेशन के प्रवेश बिंदु। Document पूर्ण PDF फ़ाइलों को लोड, बनाता, संयोजित और सहेजता है; Page, जो doc.Pages के माध्यम से पहुँचा जाता है, प्रति-पृष्ठ पाठ, छवि, एनोटेशन, और कंटेंट-स्ट्रीम ऑपरेशनों को उजागर करता है।
दस्तावेज़ जीवनचक्र
Document.OpenFile() फ़ाइल पथ से PDF खोलता है; Document.Open() एक इन-मेमोरी Uint8Array स्वीकार करता है। पृष्ठों को स्थान पर निरीक्षण किया जा सकता है और संपादित किया जा सकता है, और Document.WriteTo() परिणाम को वापस लिखता है — वैकल्पिक रूप से xref-stream और object-stream संपीड़न के साथ।
import { Document } from '@asposefoss/pdf';
// Open from disk (or Document.Open(uint8array) for in-memory data)
const doc = Document.OpenFile('input.pdf');
// Inspect and edit pages
const pages = doc.Pages;
console.log(pages.length);
pages[0].Rotate = 90;
doc.RemovePage(2); // 1-based page number
doc.Reorder([3, 1, 2]);
// Metadata
doc.SetMetadata({ title: 'Report', author: 'Jane', custom: { Dept: 'R&D' } });
// Save
doc.WriteTo('output.pdf'); // or: const bytes = doc.Save();
doc.WriteTo('small.pdf', { compressed: true }); // xref stream + object streams
पृष्ठों का विभाजन, मिलाना और निकालना
Document.Split() प्रत्येक पृष्ठ के लिए एक Document लौटाता है। Document.ExtractPages() 1-आधारित, दोहराव-स्वीकार्य पृष्ठ सूची लेता है और केवल उन पृष्ठों के साथ एक नया Document लौटाता है। Document.Append() और Document.InsertPage() दस्तावेज़ों के बीच पृष्ठों की प्रतिलिपि बनाते हैं, और Document.Merge() कई दस्तावेज़ों को एक में संयोजित करता है।
const parts = doc.Split(); // one Document per page
const chapter = doc.ExtractPages([3, 4, 5]); // subset (1-based, repeats allowed) as a new Document
docA.Append(docB); // copy all of docB's pages onto docA
docA.InsertPage(1, docB.Pages[0]); // copy a single page across documents
नया दस्तावेज़ बनाना
Document.New() दिए गए PageFormat पर एक खाली दस्तावेज़ शुरू करता है। Page.AddText() स्थित टेक्स्ट रखता है, और Document.AddPage() आगे के पृष्ठ जोड़ता है, जिसमें PageFormat.A4.landscape() जैसे घुमाए गए स्वरूप शामिल हैं।
import { Document, PageFormat } from '@asposefoss/pdf';
const doc = Document.New(PageFormat.A4); // one blank A4 page
doc.Pages[0].AddText('Hello', 72, 720, { fontSize: 14 });
doc.AddPage(PageFormat.A4.landscape()); // append more as you go
doc.WriteTo('scratch.pdf');वॉटरमार्क और पेज नंबर
Page.AddText() भी घुमाव, रंग, और अपारदर्शिता का समर्थन करता है, जो पेज नंबर और तिरछे वॉटरमार्क को बिना किसी अतिरिक्त क्लास के रेंडर करने के लिए पर्याप्त है।
const doc = Document.OpenFile('in.pdf');
const page = doc.Pages[0];
// Page number, right-aligned near the bottom-right corner.
const w = page.Rect[2] - page.Rect[0];
page.AddText(`Page ${page.Number}`, w - 40, 20, { fontSize: 10, align: 'right' });
// Semi-transparent diagonal watermark, centered on the page.
page.AddText('DRAFT', page.Rect[2] / 2, page.Rect[3] / 2, {
font: 'Times-Bold', fontSize: 64, color: [0.7, 0.7, 0.7], opacity: 0.4, rotate: 45, align: 'center',
});
doc.WriteTo('out.pdf');बहु-स्तंभीय टेक्स्ट प्रवाह
parseContentStream() पेज की कच्ची /Contents स्ट्रीम को ऑपरेटर/ऑपरेण्ड जोड़ों की सूची में डिकोड करता है, और serializeContentStream() संपादित ऑपरेटर सूची को वापस बाइट्स में बदलता है।
import { parseContentStream, serializeContentStream } from '@asposefoss/pdf';
const ops = parseContentStream(doc.Pages[0].Contents);
// ops: { operator: string, operands: PdfObject[], inlineImage?: {...} }[]
for (const op of ops) {
if (op.operator === 'Tj') console.log('text op:', op.operands);
}
const bytes = serializeContentStream(ops); // round-trips operators + operands
बहु-स्तंभीय टेक्स्ट प्रवाह
Page.AddTextBlock() लंबी टेक्स्ट स्ट्रिंग को आयताकार क्षेत्र में प्रवाहित करता है और वह टेक्स्ट वापस देता है जो फिट नहीं हुआ, जिसे दूसरे कॉल में फीड करके दूसरे कॉलम में प्रवाह जारी रखा जा सकता है।
const rest = page.AddTextBlock(longText, [72, 600, 200, 150], {
font: 'Times-Roman', fontSize: 11, align: 'justify', valign: 'top', leading: 14,
});
if (rest) page.AddTextBlock(rest, [300, 600, 200, 150]); // continue into a 2nd column
टिप्स और सर्वोत्तम प्रथाएँ
Document.OpenFile()का उपयोग फ़ाइल पाथ के लिए करें औरDocument.Open()का उपयोग इन-मेमारीUint8Arrayडेटा के लिए करें।- पेज नंबर जो
RemovePage()औरExtractPages()जैसी विधियों को पास किए जाते हैं, वे 1-आधारित होते हैं, जबकिdoc.Pagesएक 0-आधारित सरणी है। { compressed: true }कोDocument.WriteTo()में पास करें ताकि आउटपुट पर xref-stream और object-stream संपीड़न सक्षम हो सके।Document.ExtractPages()दोहराए गए पेज नंबर स्वीकार करता है, इसलिए वही स्रोत पृष्ठ परिणाम में एक से अधिक बार दिखाई दे सकता है।- निर्देशांक हार्डकोड करने के बजाय पृष्ठ की वास्तविक चौड़ाई और ऊँचाई के सापेक्ष स्थितियों की गणना करने के लिए
page.Rectपढ़ें।
सामान्य समस्याएँ
| समस्या | कारण | समाधान |
|---|---|---|
Document.Open() / OpenFile() फेंकता है InvalidPasswordError | PDF पासवर्ड-रक्षित है और कोई पासवर्ड (या गलत पासवर्ड) प्रदान नहीं किया गया | { password: '...' } को Document.OpenFile() / Document.Open() को पास करें |
RemovePage() गलत पृष्ठ हटाता है | RemovePage() को पास किए गए पृष्ठ संख्याएँ 1-आधारित हैं, 0-आधारित नहीं | 1-आधारित पृष्ठ संख्या पास करें, जो doc.Pages ऐरे अनुक्रमण से अलग हो |
WriteTo() आउटपुट अपेक्षा से बड़ा है | डिफ़ॉल्ट सहेजना xref/object-stream संपीड़न का उपयोग नहीं करता | { compressed: true } को Document.WriteTo() को पास करें |
FAQ
क्या Document.Open() फ़ाइल पथों और मेमोरी में मौजूद डेटा दोनों को स्वीकार करता है?
Document.OpenFile() फ़ाइल पथ से खुलता है; Document.Open() मेमोरी में मौजूद बाइट्स के Uint8Array को स्वीकार करता है।
क्या पेज नंबरिंग 0-आधारित है या 1-आधारित?
दोनों, यह API पर निर्भर करता है: doc.Pages एक साधारण 0-आधारित एरे है, लेकिन RemovePage() और ExtractPages() जैसे मेथड 1-आधारित पेज नंबर लेते हैं।
क्या मैं दस्तावेज़ को सहेजते समय एन्क्रिप्ट कर सकता हूँ?
हाँ — encrypt विकल्प को WriteTo() / Save() को algorithm: 'aes256' | 'aes128' | 'rc4' के साथ और वैकल्पिक उपयोगकर्ता/स्वामी पासवर्ड पास करें।
मैं आउटपुट फ़ाइल का आकार कैसे घटा सकता हूँ?
{ compressed: true } को Document.WriteTo() को पास करें ताकि xref-stream और object-stream संपीड़न सक्षम हो सके।
क्या मैं पेज के रॉ कंटेंट-स्ट्रीम ऑपरेटरों की जाँच कर सकता हूँ?
हाँ — parseContentStream(doc.Pages[0].Contents) ऑपरेटर सूची लौटाता है, और serializeContentStream() संपादित सूची को वापस बाइट्स में परिवर्तित करता है।
API Reference सारांश
| क्लास / मेथड | विवरण |
|---|---|
Document | PDF दस्तावेज़ बनाने, लोड करने और सहेजने के लिए केंद्रीय प्रवेश बिंदु |
Document.OpenFile() / Document.Open() | फ़ाइल पथ या इन-मेमोरी बाइट्स से PDF लोड करें |
Document.New() | दिए गए PageFormat के साथ एक खाली दस्तावेज़ शुरू करें |
Document.WriteTo() / Document.Save() | दस्तावेज़ को फ़ाइल पथ पर लिखें या बाइट्स लौटाएँ |
Document.Split() / Document.Merge() / Document.ExtractPages() | दस्तावेज़ों में पृष्ठों को विभाजित करें, मिलाएँ और निकालें |
Document.Append() / Document.InsertPage() | एक दस्तावेज़ से पृष्ठों को दूसरे में कॉपी करें |
Page | एक एकल PDF पृष्ठ; पाठ, छवि, एनोटेशन और कंटेंट-स्ट्रीम मेथड्स को उजागर करता है |
Page.AddText() / Page.AddTextBlock() | पृष्ठ पर स्थित या प्रवाहित पाठ जोड़ें |
parseContentStream() / serializeContentStream() | पृष्ठ की कच्ची कंटेंट-स्ट्रीम ऑपरेटर्स को पार्स कर फिर से सीरियलाइज़ करें |