परिचय

Aspose.PDF FOSS for C++ एक नया ओपन-सोर्स लाइब्रेरी है जो C++20 कोड से PDF दस्तावेज़ों के साथ काम करने के लिए बनाया गया है। यह MIT लाइसेंस के तहत जारी किया गया है और C++ मानक लाइब्रेरी के अलावा किसी रनटाइम निर्भरता को नहीं लेता — BMP, JPEG, और TIFF एन्कोडर, पेज रास्टराइज़र, और PDF पार्सर आंतरिक रूप से लागू किए गए हैं, इसलिए कोई वाणिज्यिक PDF इंजन, बाहरी इमेज कोडेक, या थर्ड‑पार्टी क्रिप्टोग्राफी लाइब्रेरी से लिंक नहीं है।

लाइब्रेरी Aspose::Pdf::Document क्लास के इर्द‑गिर्द व्यवस्थित है, जो फ़ाइल पथ से PDF लोड करता है और इसकी सामग्री Document.Pages() के माध्यम से प्रदान करता है, जो व्यक्तिगत Page वस्तुओं का एक PageCollection है। वहीं से, API पाठ निष्कर्षण, पृष्ठ रास्टरकरण, दस्तावेज़ एन्क्रिप्शन, एनोटेशन, और AcroForm फ़ील्ड्स को कवर करता है — वे संचालन जो मौजूदा PDF फ़ाइलों को पढ़ने, निरीक्षण करने और संशोधित करने, या शून्य से नई फ़ाइलें बनाने के लिए आवश्यक हैं।

यह रिलीज़ उन डेवलपर्स के लिए है जिन्हें C++ कोडबेस के भीतर PDF प्रोसेसिंग की आवश्यकता है, बिना किसी वाणिज्यिक लाइसेंस या थर्ड‑पार्टी निर्भरता श्रृंखला को जोड़े: दस्तावेज़ पाइपलाइन, कंटेंट‑एक्सट्रैक्शन सेवाएँ, PDF‑से‑इमेज रूपांतरण टूल, और ऐसे अनुप्रयोग जिन्हें फ़ॉर्म डेटा को एन्क्रिप्ट या पढ़ने की आवश्यकता होती है, बड़े बिल्ड का हिस्सा बनते हुए।


क्या शामिल है

दस्तावेज़ लोडिंग और पेज एक्सेस

मौजूदा PDF को खोलना केवल एक कंस्ट्रक्टर कॉल है। Document फ़ाइल को पार्स करता है और उसकी पृष्ठों को Pages() के माध्यम से प्रदान करता है, जो एक PageCollection लौटाता है जो 1‑आधारित अनुक्रमण, Count(), और पृष्ठ क्रम को पुनर्गठित करने के लिए Add()/Insert()/Delete() को समर्थन देता है।

#include <aspose/pdf/document.hpp>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    std::cout << "Page count: " << doc.Pages().Count() << "\n";

    auto page = doc.Pages()[1];
    std::cout << "First page number: " << page.Number() << "\n";
}

पाठ निष्कर्षण

Aspose::Pdf::Text::TextAbsorber एक Document या एकल Page पर चलता है और जो भी पाठ सामग्री मिलती है उसे एकत्र करता है। Visit() को दस्तावेज़ या पृष्ठ के साथ कॉल करें, फिर परिणाम को Text() से पढ़ें। HasErrors() यह रिपोर्ट करता है कि क्या एब्जॉर्बर ऐसी सामग्री से मिला जिसे वह प्रोसेस नहीं कर सका।

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("input.pdf");

    Aspose::Pdf::Text::TextAbsorber absorber;
    absorber.Visit(doc);
    std::cout << absorber.Text() << "\n";

    if (absorber.HasErrors()) {
        std::cerr << "Some content could not be extracted\n";
    }
}

रेस्टर छवियों में रेंडरिंग

पृष्ठ BmpDevice, JpegDevice, और TiffDevice क्लासों के माध्यम से BMP, JPEG, या TIFF में रेंडर होते हैं। प्रत्येक डिवाइस को Resolution के साथ निर्मित किया जाता है और एक Process(page, output) मेथड प्रदान करता है जो रेंडर की गई छवि को आउटपुट स्ट्रीम में लिखता है।

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/bmp_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>

int main() {
    Aspose::Pdf::Document doc("input.pdf");

    Aspose::Pdf::Devices::BmpDevice bmp(Aspose::Pdf::Devices::Resolution(150));
    std::ofstream out("page1.bmp", std::ios::binary);
    bmp.Process(doc.Pages()[1], out);
}

एन्क्रिप्शन

Document.Encrypt() एक दस्तावेज़ को उपयोगकर्ता पासवर्ड, मालिक पासवर्ड, अनुमति मान, और एक CryptoAlgorithm चयन के साथ सुरक्षित करता है। यह enum RC4-40 (RC4x40), RC4-128 (RC4x128), AES-128 (AESx128), और AES-256 (AESx256) को कवर करता है। Document.Decrypt() इस प्रक्रिया को उलटता है, और IsEncrypted() रिपोर्ट करता है कि क्या दस्तावेज़ वर्तमान में एन्क्रिप्टेड है।

#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");
}

एनोटेशन

प्रत्येक Page Annotations() के माध्यम से एक AnnotationCollection को उजागर करता है। एक TextAnnotation को स्वामित्व वाले दस्तावेज़ के विरुद्ध निर्मित किया जाता है, Rectangle के साथ स्थित किया जाता है, और Add() के साथ पृष्ठ के संग्रह में जोड़ा जाता है।

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/annotations/text_annotation.hpp>
#include <aspose/pdf/rectangle.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");

    Aspose::Pdf::Annotations::TextAnnotation note(doc);
    note.Rect(Aspose::Pdf::Rectangle(100.0, 700.0, 200.0, 720.0, false));
    note.Contents("Reviewed - see section 2");

    doc.Pages()[1].Annotations().Add(note);
    doc.Save("annotated.pdf");
}

AcroForm फ़ील्ड्स

Document.Form() दस्तावेज़ का Form लौटाता है, जो मौजूदा फ़ील्ड्स को Fields() के माध्यम से std::vector<Field*> के रूप में उजागर करता है। प्रत्येक Field अपना नाम और वर्तमान मान PartialName() और Value() के माध्यम से रिपोर्ट करता है, और Form.Flatten() प्रत्येक फ़ील्ड की उपस्थिति को पृष्ठ सामग्री में बेक कर देता है, जिससे इंटरैक्टिविटी हट जाती है।

#include <aspose/pdf/document.hpp>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("form.pdf");
    auto& form = doc.Form();

    std::cout << "Field count: " << form.Count() << "\n";
    for (auto* field : form.Fields()) {
        std::cout << field->PartialName() << " = " << field->Value() << "\n";
    }

    form.Flatten();
    doc.Save("flattened.pdf");
}

त्वरित शुरुआत

लाइब्रेरी को CMake सबडायरेक्टरी के रूप में जोड़ें और aspose_pdf_foss टार्गेट के खिलाफ लिंक करें:

add_subdirectory(aspose.pdf-foss-for-cpp)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)

एक दस्तावेज़ खोलें, उसका पृष्ठ गणना प्रिंट करें, उसका टेक्स्ट निकालें, और प्रथम पृष्ठ को BMP फ़ाइल में रेंडर करें:

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <aspose/pdf/bmp_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    std::cout << "Pages: " << doc.Pages().Count() << "\n";

    Aspose::Pdf::Text::TextAbsorber absorber;
    absorber.Visit(doc);
    std::cout << absorber.Text() << "\n";

    Aspose::Pdf::Devices::BmpDevice bmp(Aspose::Pdf::Devices::Resolution(150));
    std::ofstream out("page1.bmp", std::ios::binary);
    bmp.Process(doc.Pages()[1], out);
}

समर्थित स्वरूप

फ़ॉर्मेटएक्सटेंशनपढ़ेंलिखें
BMP.bmp
JPEG.jpg
TIFF.tiff
Text.txt
SVG.svg

BMP, JPEG, और TIFF उनके संबंधित डिवाइस क्लासों द्वारा निर्मित पेज-रेंडरिंग आउटपुट हैं। टेक्स्ट को PDF से TextAbsorber के माध्यम से निकाला जाता है। SVG को लाइब्रेरी के SVG लोड पाथ के द्वारा वेक्टर कंटेंट के रूप में इम्पोर्ट किया जाता है।


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

Aspose.PDF FOSS for C++ MIT लाइसेंस के तहत वितरित किया गया है, पूर्ण स्रोत उपलब्ध है at github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Cpp. लाइसेंस व्यावसायिक उपयोग, संशोधन, और पुनर्वितरण की अनुमति देता है बिना किसी अलग समझौते के।


शुरूआत

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