परिचय

Aspose.PDF FOSS में TypeScript के लिए हर क्षमता दो क्लासों के माध्यम से प्राप्त होती है: Document और Page. Document पेज कलेक्शन और सभी दस्तावेज-स्तरीय चीज़ों — मेटाडेटा, बुकमार्क, पेज लेबल, और सहेजना/लोड करना — का स्वामित्व रखती है, जबकि doc.Pages में प्रत्येक Page उस एक पेज से संबंधित सभी चीज़ों — सामग्री, एनोटेशन, और फॉर्म फ़ील्ड — का स्वामित्व रखता है। एक बार जब इन दो क्लासों से परिचित हो जाएँ, तो लाइब्रेरी की बाकी सतह — रूपांतरण, एनोटेशन, फॉर्म, सुरक्षा — वास्तव में वही दो ऑब्जेक्ट्स पर अधिक मेथड्स ही हैं।

यह पोस्ट उस कोर सतह के उन भागों पर करीब से नजर डालती है जिन्हें परिचयात्मक पोस्ट केवल संक्षेप में उल्लेख करता है: अन्य दस्तावेज़ों से दस्तावेज़ों को जोड़ना, शून्य से पेज बनाना, नेविगेशन के लिए बुकमार्क ट्री जोड़ना, और एक्सेसिबिलिटी के लिए सामग्री को टैग करना। ये सभी चार साधारण मेथड कॉल हैं — कोई अलग मॉड्यूल इम्पोर्ट करने की आवश्यकता नहीं, @asposefoss/pdf पैकेज स्वयं के अलावा कोई अतिरिक्त निर्भरता नहीं।

ये वे ऑपरेशन हैं जो तब सामने आते हैं जब PDF पाइपलाइन “एक फ़ाइल खोलें, बदलें, सहेजें” से आगे बढ़ती है: कई स्रोतों से रिपोर्टों को एक ही दस्तावेज़ में मिलाना, टेम्प्लेट से शुरू करने के बजाय प्रोग्रामेटिक रूप से पेज जनरेट करना, और आउटपुट को केवल दृश्य रूप से सही होने के बजाय नेविगेबल और एक्सेसिबल बनाना।


क्या शामिल है

दस्तावेज़ों को इकट्ठा करना और पुनर्गठित करना

Document.Split() दस्तावेज़ को पेज क्रम में प्रत्येक पेज के लिए एक नया सिंगल-पेज Document में तोड़ देता है। Document.ExtractPages() दिए गए 1-आधारित पेज नंबरों के सेट को नई स्व-निहित Document में कॉपी करता है, दिए गए क्रम में — वही पेज दोहराया जा सकता है। एक दस्तावेज़ के पेज को दूसरे में भी कॉपी किया जा सकता है: Document.Append() स्रोत दस्तावेज़ के प्रत्येक पेज को लक्ष्य के अंत में कॉपी करता है, और Document.InsertPage() एक विशिष्ट 1-आधारित स्थिति पर दस्तावेज़ों के बीच एकल पेज कॉपी करता है।

import { Document } from '@asposefoss/pdf';

const report = Document.OpenFile('report.pdf');

const parts = report.Split();                      // one Document per page
const chapter = report.ExtractPages([3, 4, 5]);     // subset (1-based, repeats allowed) as a new Document

const cover = Document.OpenFile('cover.pdf');
report.InsertPage(1, cover.Pages[0]);               // copy a single page across documents
report.Append(chapter);                             // copy chapter's pages onto report

report.WriteTo('assembled.pdf');

कई दस्तावेज़ों को भी Document.Merge() के एक ही कॉल में एक साथ जोड़ा जा सकता है, जो प्रत्येक पास किए गए दस्तावेज़ के हर पृष्ठ की प्रतियों से क्रम में एक नया Document बनाता है।

शुरुआत से पृष्ठ बनाना

Document.New() कुछ भी नहीं से एक दस्तावेज़ बनाता है: जब फ़ॉर्मेट छोड़ा जाता है तो शून्य पृष्ठ, या जब एक दिया जाता है तो दिए गए PageFormat का एक खाली पृष्ठ बनता है। अतिरिक्त खाली पृष्ठ Document.AddPage() से आते हैं, जो एक PageFormat को भी स्वीकार करता है (या मौजूदा Page का आकार कॉपी करने के लिए)। टेक्स्ट Page.AddText() के साथ पृष्ठ पर खींचा जाता है, जो PDF उपयोगकर्ता स्पेस में (x, y) बिंदु पर स्थित होता है।

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');

बुकमार्क और दस्तावेज़ नेविगेशन

दस्तावेज़ रूपरेखा (बुकमार्क पैनल जो अधिकांश PDF रीडर पृष्ठ के बगल में दिखाते हैं) को Document.GetOutlines() द्वारा पढ़ा जाता है और पूर्ण रूप से Document.SetOutlines() से बदल दिया जाता है, प्रत्येक OutlineItem मानों के पेड़ के साथ काम करता है। प्रत्येक OutlineItem में एक Title, एक Dest गंतव्य, और वैकल्पिक रूप से नेस्टेड एंट्रीज़ के लिए Children होता है, साथ ही Open (डिफ़ॉल्ट रूप से विस्तारित) और Bold जैसे प्रदर्शन संकेत भी होते हैं।

import { Document, OutlineItem } from '@asposefoss/pdf';

const items: OutlineItem[] = [
  { Title: 'Introduction', Dest: { name: 'intro' } },
  {
    Title: 'Chapters',
    Open: true,
    Children: [
      { Title: 'Chapter 1', Dest: { name: 'ch1' } },
      { Title: 'Chapter 2', Dest: { name: 'ch2' } },
    ],
  },
];
doc.SetOutlines(items);

इस प्रकार नामित गंतव्य ({ name: 'intro' }) दस्तावेज़ की नामित-गंतव्य तालिका के माध्यम से हल होते हैं, जिसे Document.GetNamedDestinations() और Document.SetNamedDestination() सीधे प्रबंधित करते हैं जब बुकमार्क को किसी ऐसे गंतव्य की ओर इंगित करना पड़ता है जो पृष्ठ सामग्री से जुड़ा नहीं होता।

संरचित टेक्स्ट और एक्सेसेबिलिटी टैगिंग

Document.GetStructTree() दस्तावेज़ की तार्किक संरचना वृक्ष लौटाता है (या जब दस्तावेज़ टैग नहीं किया गया हो तो null), और Document.CreateStructTree() एक बनाता है, जिससे दस्तावेज़ को टैग्ड चिह्नित किया जाता है। एक बार संरचना वृक्ष मौजूद हो जाने पर, Page.GetStructuredText() पृष्ठ के टेक्स्ट को TextBlock मानों के रूप में लौटाता है — स्थित टुकड़े जो पहले से ही पंक्तियों और पैराग्राफ-सम समान ब्लॉकों में समूहित होते हैं — जो हाथ से टैगिंग पास के इनपुट के रूप में उपयोग होते हैं: ब्लॉकों को चलाते हुए, तय करना कि कौनसे शीर्षक हैं बनाम मुख्य टेक्स्ट, और संबंधित तत्वों को वृक्ष में जोड़ना।

function handTagPage(doc: Document, page: Page, heading: string): void {
  const root = doc.GetStructTree();
  if (!root) throw new Error('handTagPage: the document is not tagged yet');
  for (const block of page.GetStructuredText()) {
    const text = block.text.trim();
    if (text.length === 0) continue;
    const el = root.Append(text.startsWith(heading) ? 'H2' : 'P');
    el.MarkContent(page, block.quad);
  }
}

एक टैग्ड स्ट्रक्चर ट्री वह है जिस पर डाउनस्ट्रीम फीचर्स निर्मित होते हैं: सेमेंटिक HTML एक्सपोर्ट उससे रीफ़्लो करता है बजाय सादे हीयुरिस्टिक लेआउट पर वापस जाने के, और Document.ValidatePdfUa() दस्तावेज़ को PDF/UA एक्सेसेबिलिटी मानक के एक उपसमुच्चय के विरुद्ध जांचता है जो टैगिंग की उपस्थिति पर निर्भर करता है।


त्वरित प्रारंभ

पैकेज इंस्टॉल करें, फिर एक दस्तावेज़ खोलें, उसके पृष्ठों के एक उपसमुच्चय को निकालें और पुनः संयोजित करें, और परिणाम सहेजें:

git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run build
import { Document } from '@asposefoss/pdf';

const doc = Document.OpenFile('report.pdf');

const chapter = doc.ExtractPages([3, 4, 5]);   // subset (1-based, repeats allowed) as a new Document
const cover = Document.OpenFile('cover.pdf');

doc.InsertPage(1, cover.Pages[0]);             // copy a single page across documents
doc.Append(chapter);                           // copy chapter's pages onto doc

doc.WriteTo('assembled.pdf');

समर्थित फ़ॉर्मेट

फ़ॉर्मेटएक्सटेंशनपढ़ेंलिखें
PDFpdf
Markdownmd
SVGsvg
TIFFtiff
DOCXdocx
HTMLhtml
PNGpng
EPUBepub

ओपन सोर्स एवं लाइसेंसिंग

Aspose.PDF FOSS for TypeScript MIT लाइसेंस के तहत जारी किया गया है, स्रोत GitHub पर प्रकाशित है। कोई मूल्यांकन वाटरमार्क, उपयोग सीमा, या प्रबंधित करने के लिए अलग लाइसेंस फ़ाइल नहीं है, और लाइब्रेरी को वाणिज्यिक उत्पादों में बिना रॉयल्टी के उपयोग किया जा सकता है।

पैकेज वर्तमान में संस्करण 0.1.0 पर है, जो सक्रिय प्रारंभिक-स्तर विकास को दर्शाता है। Node.js (>=22) एकमात्र रनटाइम आवश्यकता है, और पैकेज की कोई अन्य थर्ड-पार्टी निर्भरताएँ नहीं हैं।


शुरू करना

संबंधित संसाधन