Aspose.PDF FOSS for C++ फीचर्स
Aspose.PDF FOSS for C++ विशेषताएँ
Aspose.PDF FOSS for C++ एक C++20 लाइब्रेरी है जो PDF दस्तावेज़ बनाने, खोलने, संशोधित करने और सहेजने के लिए उपयोग होती है। यह पृष्ठ प्रमुख क्षमता क्षेत्रों और उन कक्षाओं का सर्वेक्षण करता है जो उनके प्रवेश बिंदु के रूप में कार्य करती हैं। प्रत्येक क्षेत्र को विस्तृत रूप से उसके स्वयं के डेवलपर-गाइड पृष्ठ पर कवर किया गया है।
दस्तावेज़ प्रबंधन
Aspose::Pdf::Document प्रत्येक क्रिया के लिए मूल ऑब्जेक्ट है। यह किसी पथ से मौजूदा फ़ाइल को खोलता है, Pages() के द्वारा पृष्ठ संग्रह को उजागर करता है, और Save() के साथ परिवर्तनों को स्थायी बनाता है। Optimize() और OptimizeResources() अनावश्यक या दोहराए गए संसाधनों को हटाकर फ़ाइल आकार को घटाते हैं।
#include <aspose/pdf/document.hpp>
int main() {
Aspose::Pdf::Document doc("input.pdf");
auto& pages = doc.Pages();
pages.Add(); // append a blank page
pages.Delete(1); // remove the original first page
doc.Optimize();
doc.Save("output.pdf");
}पाठ निष्कर्षण
Aspose::Pdf::Text::TextAbsorber दस्तावेज़ या एकल पृष्ठ को पार करते हुए साधारण पाठ एकत्र करता है, जिसे Visit() को कॉल करने के बाद Text() से प्राप्त किया जाता है। TextFragmentAbsorber समान प्रक्रिया करता है, लेकिन TextFragments() के माध्यम से व्यक्तिगत TextFragment ऑब्जेक्ट लौटाता है, जिससे प्रत्येक अंश की स्थिति और पाठ स्थिति तक पहुंच मिलती है।
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <iostream>
int main() {
Aspose::Pdf::Document doc("report.pdf");
Aspose::Pdf::Text::TextAbsorber absorber;
absorber.Visit(doc);
std::cout << absorber.Text() << "\n";
}रेस्टर छवियों में रेंडरिंग
पेज-रेंडरिंग डिवाइस Page को रास्टर इमेज में बदलते हैं। BmpDevice, PngDevice, JpegDevice और TiffDevice समान Process(page, output) सिग्नेचर साझा करते हैं और एक Resolution के साथ निर्मित होते हैं जो आउटपुट DPI सेट करता है।
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/bmp_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>
int main() {
Aspose::Pdf::Document doc("report.pdf");
Aspose::Pdf::Devices::BmpDevice device(Aspose::Pdf::Devices::Resolution(150));
std::ofstream out("page1.bmp", std::ios::binary);
device.Process(doc.Pages()[1], out);
}एन्क्रिप्शन
Document::Encrypt() एक दस्तावेज़ की सुरक्षा उपयोगकर्ता पासवर्ड (जिसे खोलने के लिए आवश्यक है) और मालिक पासवर्ड (जिसे अनुमतियाँ बदलने के लिए आवश्यक है) से करता है, और CryptoAlgorithm ए़नम से चुने गए एल्गोरिद्म का उपयोग करता है: RC4x40, RC4x128, AESx128 या AESx256. IsEncrypted() वर्तमान स्थिति की रिपोर्ट करता है और Decrypt() पहले से खुले दस्तावेज़ से सुरक्षा हटाता है।
#include <aspose/pdf/document.hpp>
int main() {
Aspose::Pdf::Document doc("input.pdf");
doc.Encrypt("user-password", "owner-password",
Aspose::Pdf::Permissions::PrintDocument,
Aspose::Pdf::CryptoAlgorithm::AESx256);
doc.Save("encrypted.pdf");
}एनोटेशन
एनोटेशन पेज पर दृश्य नोट्स, आकृतियों और मार्कअप को संलग्न करते हैं। प्रत्येक एनोटेशन प्रकार Annotation से व्युत्पन्न होता है और लक्ष्य Page तथा एक प्लेसमेंट Rectangle के साथ निर्मित किया जाता है, फिर एनोटेशन() (एक AnnotationCollection) के द्वारा पेज में जोड़ा जाता है।
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_annotation.hpp>
#include <aspose/pdf/rectangle.hpp>
int main() {
Aspose::Pdf::Document doc("input.pdf");
auto page = doc.Pages()[1];
Aspose::Pdf::Annotations::TextAnnotation note(
page, Aspose::Pdf::Rectangle(50.0, 700.0, 250.0, 740.0, false));
note.Contents("Reviewed and approved.");
page.Annotations().Add(note);
doc.Save("annotated.pdf");
}Forms
AcroForm फ़ील्ड Aspose::Pdf::Forms::Form के माध्यम से प्रबंधित होते हैं, जो Document::Form() द्वारा पहुँचे जा सकते हैं। TextBoxField जैसे फ़ील्ड प्रकार एनोटेशन की तरह — एक Page और एक Rectangle के साथ — निर्मित होते हैं और Form::Add() के साथ पंजीकृत किए जाते हैं।
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_box_field.hpp>
#include <aspose/pdf/rectangle.hpp>
int main() {
Aspose::Pdf::Document doc("input.pdf");
auto page = doc.Pages()[1];
Aspose::Pdf::Forms::TextBoxField field(
page, Aspose::Pdf::Rectangle(100.0, 650.0, 300.0, 670.0, false));
field.PartialName("customer_name");
field.Value("Jane Doe");
doc.Form().Add(field);
doc.Save("form_filled.pdf");
}टिप्स और सर्वोत्तम प्रथाएँ
- इनपुट फ़ाइलें पथ द्वारा
Documentनिर्माता से खोलें;Save()को स्पष्ट आउटपुट पथ के साथ बुलाएँ, ताकि स्रोत को अधिलेखित न किया जाए जबकि उसके अन्य हैंडल अभी भी खुले हो सकते हैं। - जब किसी दस्तावेज़ को व्यापक रूप से संपादित किया गया हो, तब
Optimize()कोSave()से पहले बुलाएँ — यह उन संसाधनों को हटाता है जो अब किसी पृष्ठ द्वारा संदर्भित नहीं हैं। - रास्टर उपकरणों (
BmpDevice,PngDevice,JpegDevice,TiffDevice) को प्रत्येक रिज़ॉल्यूशन के लिए एक बार बनाएँ और पृष्ठों में उनका पुनः उपयोग करें, बजाय प्रत्येक पृष्ठ के लिए नया उपकरण बनाने के। - जब
Encrypt()को बुलाया जाए, तो उपयोगकर्ता पासवर्ड और मालिक पासवर्ड दोनों सेट करें — खाली उपयोगकर्ता पासवर्ड किसी भी दर्शक को फ़ाइल खोलने देता है, जबकि मालिक पासवर्ड अनुमतियों में बदलाव को नियंत्रित करता है। - एनोटेशन और फ़ील्ड वस्तुओं (
TextAnnotation,TextBoxFieldआदि) कोSave()के लौटने तक जीवित रखें, क्योंकि दस्तावेज़ उन पृष्ठ सामग्री के संदर्भ रखता है जिनमें उन्हें जोड़ा गया था।
सामान्य समस्याएँ
| समस्या | कारण | समाधान |
|---|---|---|
Save() एक फ़ाइल बनाता है जिसकी सामग्री अपरिवर्तित रहती है | संपादन doc.Pages() से प्राप्त वस्तु के बजाय पृष्ठ या एनोटेशन की प्रति पर किए गए थे | सीधे Pages(), Annotations(), या Form() द्वारा लौटाए गए ऑब्जेक्ट को संशोधित करें |
| रेंडर की गई छवि खाली या रिक्त है | गलत पृष्ठ सूचकांक Process() को पास किया गया | PageCollection 1-इंडेक्स्ड है — पृष्ठ1 doc.Pages()[1] है, [0] नहीं |
Encrypt() एक फ़ाइल बनाता है जो पासवर्ड के बिना भी खुलती है | उपयोगकर्ता पासवर्ड खाली छोड़ा गया | userPassword तर्क के रूप में गैर-खाली स्ट्रिंग पास करें |
| स्कैन किए गए PDF के लिए निकाला गया टेक्स्ट खाली है | पृष्ठ में केवल रास्टर इमेज सामग्री है, टेक्स्ट ऑपरेटर नहीं | TextAbsorber टेक्स्ट ऑपरेटर पढ़ता है; केवल-इमेज पृष्ठों में निकालने के लिये कोई नहीं होता |
Form::Add() के साथ जोड़ा गया फ़ील्ड पृष्ठ पर दिखाई नहीं देता | फ़ील्ड का Rectangle पृष्ठ के MediaBox के बाहर है | सुनिश्चित करें कि आयत के निर्देशांक Page::MediaBox() की सीमाओं के भीतर हों |
FAQ
क्या Aspose.PDF C++ के लिए FOSS किसी व्यावसायिक PDF लाइब्रेरी पर निर्भर है?
नहीं। यह शून्य से बना C++20 कार्यान्वयन है, जो किसी भी व्यावसायिक PDF स्टैक पर निर्भर नहीं है, और MIT लाइसेंस के तहत जारी किया गया है।
क्या मैं मौजूदा PDF खोलने के बजाय शून्य से एक नया PDF बना सकता हूँ?
हाँ। Document में एक डिफ़ॉल्ट कंस्ट्रक्टर है जो एक खाली दस्तावेज़ बनाता है; सहेजने से पहले पृष्ठ जोड़ने के लिए Pages().Add() को कॉल करें।
मैं किन रास्टर फ़ॉर्मेट्स में रेंडर कर सकता हूँ?
BmpDevice, PngDevice, JpegDevice, और TiffDevice क्रमशः व्यक्तिगत पृष्ठों को BMP, PNG, JPEG, और TIFF में रेंडर करते हैं।
कौन से एन्क्रिप्शन एल्गोरिदम समर्थित हैं?
CryptoAlgorithm RC4x40, RC4x128, AESx128, और AESx256 प्रदान करता है, जिन्हें Document::Encrypt() को पास किया जाता है।
अब मैं आगे कहां जाऊँ?
डेवलपर गाइड में दस्तावेज़ और पृष्ठ प्रबंधन, PDF-नेटिव ग्राफ़िक्स और आकार, एनोटेशन और इंटरैक्टिव फ़ॉर्म, तथा सामान्य फ़ाइल ऑपरेशन्स को लपेटने वाले उच्च-स्तरीय फ़ैसाड क्लासेज़ के लिए समर्पित पृष्ठ शामिल हैं।
API Reference सारांश
| क्लास/मेथड | विवरण |
|---|---|
Document | रूट ऑब्जेक्ट — PDF को खोलें, बनाएं, सहेजें और अनुकूलित करें |
Document.Pages() | दस्तावेज़ का PageCollection लौटाता है |
Document.Encrypt() / Decrypt() | किसी दस्तावेज़ को पासवर्ड से सुरक्षित करें या उसकी सुरक्षा हटाएँ |
Document.Form() | दस्तावेज़ का AcroForm कंटेनर लौटाता है |
TextAbsorber | दस्तावेज़ या पृष्ठ से साधारण पाठ निकालता है |
TextFragmentAbsorber | स्थित पाठ अंश निकालता है |
BmpDevice / PngDevice / JpegDevice / TiffDevice | एक पृष्ठ को रास्टर इमेज फ़ॉर्मेट में रेंडर करें |
Resolution | आउटपुट DPI जो रेंडरिंग डिवाइस को पास किया जाता है |
CryptoAlgorithm | एन्क्रिप्शन एल्गोरिदम चयन: RC4 या AES, 40–256 बिट |
Permissions | एक्सेस-कंट्रोल फ्लैग्स जो Encrypt() को पास किए जाते हैं |
Annotation / AnnotationCollection | पेज एनोटेशन के लिए बेस टाइप और कंटेनर |
TextAnnotation | पाठ नोट एनोटेशन |
Form | AcroForm फ़ील्ड कंटेनर Document.Form() से पहुँचा गया |
TextBoxField | सिंगल-लाइन/मल्टी-लाइन टेक्स्ट फॉर्म फ़ील्ड |