कोर 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() फेंकता है InvalidPasswordErrorPDF पासवर्ड-रक्षित है और कोई पासवर्ड (या गलत पासवर्ड) प्रदान नहीं किया गया{ 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 सारांश

क्लास / मेथडविवरण
DocumentPDF दस्तावेज़ बनाने, लोड करने और सहेजने के लिए केंद्रीय प्रवेश बिंदु
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()पृष्ठ की कच्ची कंटेंट-स्ट्रीम ऑपरेटर्स को पार्स कर फिर से सीरियलाइज़ करें

यह भी देखें

 हिन्दी