नि:शुल्क C++ लाइब्रेरी जो PDF पृष्ठों को छवि में रेंडर करती है और टेक्स्ट निकालती है।

ओपन सोर्स C++ PDF प्रोसेसिंग लाइब्रेरी जो PDF पृष्ठों को छवियों में रेंडर करने, टेक्स्ट निकालने, पासवर्ड-संरक्षित PDFs के साथ काम करने, और C++ API के माध्यम से दस्तावेज़ मेटाडेटा तक पहुँचने के लिए उपयोगी है।

PDFium-Render क्या है?

C++ एप्लिकेशन में PDF को संभालना और रेंडर करना ऐतिहासिक रूप से एक जटिल चुनौती रही है, अक्सर महंगे व्यावसायिक लाइसेंस या जटिल ओपन-सोर्स टूल्स की आवश्यकता होती है। यहाँ आता है PDFium-Render, एक आधुनिक, हेडर-ओनली C++ रैपर लाइब्रेरी जो गूगल के PDFium इंजन की शक्ति को आपके प्रोजेक्ट्स में एक सहज और साफ़ इंटरफ़ेस के साथ लाता है। PDFium-render एक सुरक्षित, स्वाभाविक Rust बाइंडिंग है PDFium के लिए, वही PDF रेंडरिंग इंजन जो Google Chrome और Mozilla Firefox को शक्ति देता है। ajrcarey द्वारा निर्मित और बनाए रखा गया यह लाइब्रेरी डेवलपर्स को PDF पृष्ठों को इमेज में रेंडर करने, टेक्स्ट निकालने, PDF संरचनाओं को संशोधित करने, और दस्तावेज़ मेटाडेटा तक पहुँचने के लिए एक शक्तिशाली टूलकिट प्रदान करता है—सभी Rust की मेमोरी सुरक्षा गारंटी का लाभ उठाते हुए।

कई PDF लाइब्रेरीज़ जो केवल निर्माण या बुनियादी पार्सिंग पर केंद्रित हैं, उनके विपरीत, PDFium-Render PDF सामग्री को पिक्सेल-परफेक्ट सटीकता के साथ रेंडर करने में उत्कृष्ट है, जिससे यह उन अनुप्रयोगों के लिए आदर्श बन जाता है जिन्हें मौजूदा PDF दस्तावेज़ों को प्रदर्शित, परिवर्तित या प्रोसेस करने की आवश्यकता होती है। यह PDF दस्तावेज़ों के साथ काम करने के लिए विभिन्न बुनियादी और उन्नत सुविधाएँ समर्थन करता है, जैसे PDF फ़ाइलों और पृष्ठों को रेंडर करना, टेक्स्ट निष्कर्षण और विश्लेषण, दस्तावेज़ मेटाडेटा के साथ काम करना, पृष्ठ ऑब्जेक्ट्स तक पहुंच और उन्हें संशोधित करना, पासवर्ड-संरक्षित PDFs के साथ काम करना, और अधिक। pdfium-render की सबसे बड़ी ताकतों में से एक इसका क्रॉस-प्लेटफ़ॉर्म समर्थन है। यह लाइब्रेरी Windows, macOS, और Linux पर सहजता से काम करती है, PDFium बाइनरीज़ में प्लेटफ़ॉर्म-विशिष्ट अंतर को अमूर्त करती है। चाहे आप एक दस्तावेज़ व्यूअर बना रहे हों, PDF प्रोसेसिंग वर्कफ़्लो को स्वचालित कर रहे हों, या PDFs से डेटा निकाल रहे हों, pdfium-render आपके लिए आवश्यक उपकरण प्रदान करता है।

Previous Next

PDFium-Render के साथ शुरूआत

PDFium-Render को स्थापित करने का अनुशंसित तरीका CMake का उपयोग करना है। सुगम स्थापना के लिए कृपया निम्नलिखित कमांड का उपयोग करें।

GitHub के माध्यम से PDFium-Render स्थापित करें

 vcpkg install pdfium-render

GitHub के माध्यम से PDFium-Render स्थापित करें

 Git clone https://github.com/ajrcarey/pdfium-render.git 

आप इसे मैन्युअल रूप से भी स्थापित कर सकते हैं; नवीनतम रिलीज़ फ़ाइलें सीधे GitHub रिपॉजिटरी से डाउनलोड करें।

C++ के माध्यम से उच्च-गुणवत्ता PDF रेंडरिंग

ओपन सोर्स PDFium-Render लाइब्रेरी की मुख्य ताकत इसकी रेंडरिंग क्षमताओं में निहित है। यह PDF पृष्ठों को असाधारण गुणवत्ता वाले रास्टर इमेज में परिवर्तित कर सकता है, जिसमें PNG, JPEG और BMP सहित विभिन्न आउटपुट फ़ॉर्मेट का समर्थन करता है। रेंडरिंग इंजन जटिल PDF सुविधाओं जैसे ट्रांसपैरेंसी, ग्रेडिएंट्स, एम्बेडेड फ़ॉन्ट्स और वेक्टर ग्राफ़िक्स को उसी सटीकता के साथ संभालता है जिसकी आप Chrome के PDF व्यूअर से अपेक्षा करेंगे। यहाँ एक सरल उदाहरण है जो दिखाता है कि सॉफ़्टवेयर डेवलपर्स C++ एप्लिकेशन्स में किसी विशिष्ट पृष्ठ को PNG इमेज फ़ॉर्मेट में कैसे रेंडर कर सकते हैं।

C++ के माध्यम से विशिष्ट PDF पृष्ठ को PNG फ़ॉर्मेट में कैसे रेंडर करें?

use pdfium_render::prelude::*;

fn render_pdf_page() -> Result<(), PdfiumError> {
    // Initialize PDFium library
    let pdfium = Pdfium::new(
        Pdfium::bind_to_library(Pdfium::pdfium_platform_library_name_at_path("./"))
            .or_else(|_| Pdfium::bind_to_system_library())?
    );
    
    // Load a PDF document
    let document = pdfium.load_pdf_from_file("sample.pdf", None)?;
    
    // Get the first page
    let page = document.pages().get(0)?;
    
    // Render the page to a bitmap at 300 DPI
    let bitmap = page.render_with_config(
        &PdfRenderConfig::new()
            .set_target_width(2480) // 300 DPI for 8.27 inches
            .set_target_height(3508) // 300 DPI for 11.69 inches
    )?;
    
    // Save as PNG
    bitmap.as_image().as_rgba8().unwrap()
        .save("output.png")?;
    
    Ok(())
}

C++ लाइब्रेरी के माध्यम से टेक्स्ट निष्कर्षण और विश्लेषण

रेंडरिंग के अलावा, PDFium-Render लाइब्रेरी व्यापक टेक्स्ट निष्कर्षण क्षमताएँ प्रदान करती है। टेक्स्ट निष्कर्षण API सहज और शक्तिशाली है। सॉफ़्टवेयर डेवलपर्स व्यक्तिगत पृष्ठों से टेक्स्ट निकाल सकते हैं, विशिष्ट स्ट्रिंग्स की खोज कर सकते हैं, और केवल कुछ कोड लाइनों के साथ कैरेक्टर-लेवल पोज़िशनिंग जानकारी तक पहुँच सकते हैं — यह टेक्स्ट चयन या हाइलाइटिंग जैसी सुविधाओं को लागू करने के लिए महत्वपूर्ण है। निम्नलिखित उदाहरण दिखाता है कि सॉफ़्टवेयर डेवलपर्स C++ एप्लिकेशन्स में विशिष्ट PDF पृष्ठ क्षेत्रों से टेक्स्ट कैसे निकाल सकते हैं।

C++ API के माध्यम से विशिष्ट PDF पृष्ठ क्षेत्रों से टेक्स्ट कैसे निकालें?

use pdfium_render::prelude::*;

fn extract_text_from_page() -> Result<(), PdfiumError> {
    let pdfium = Pdfium::new(
        Pdfium::bind_to_library(Pdfium::pdfium_platform_library_name_at_path("./"))
            .or_else(|_| Pdfium::bind_to_system_library())?
    );
    
    let document = pdfium.load_pdf_from_file("document.pdf", None)?;
    let page = document.pages().get(0)?;
    
    // Extract all text from the page
    let text = page.text()?;
    let all_text = text.all();
    println!("Page text: {}", all_text);
    
    // Search for specific text
    let search_results = text.search("important", true, false)?;
    for result in search_results {
        println!("Found at index: {}", result.start_index());
    }
    
    // Get text in a specific rectangular area
    let rect = PdfRect::new(100.0, 100.0, 300.0, 200.0);
    let bounded_text = text.bounded(rect)?;
    println!("Text in region: {}", bounded_text);
    
    Ok(())
}

 

C++ के माध्यम से पासवर्ड-संरक्षित PDF के साथ Word

दस्तावेज़ों के साथ काम करते समय सुरक्षा सर्वोपरि है। PDFium-Render पासवर्ड-संरक्षित PDFs को सहजता से संभालता है, उपयोगकर्ता और मालिक दोनों पासवर्डों का समर्थन करता है। लाइब्रेरी प्रमाणीकरण को पारदर्शी रूप से संभालती है, यदि पासवर्ड गलत है या PDF में ऐसी प्रतिबंध हैं जो कुछ संचालन को रोकते हैं तो उपयुक्त त्रुटियाँ लौटाती है। यहाँ एक बहुत उपयोगी उदाहरण है जो दिखाता है कि C++ अनुप्रयोगों में पासवर्ड-संरक्षित PDF दस्तावेज़ों को कैसे संभालें।

C++ API के माध्यम से पासवर्ड-संरक्षित PDF दस्तावेज़ कैसे खोलें और लोड करें?

fn open_encrypted_pdf() -> Result<(), PdfiumError> {
    let pdfium = Pdfium::new(
        Pdfium::bind_to_library(Pdfium::pdfium_platform_library_name_at_path("./"))
            .or_else(|_| Pdfium::bind_to_system_library())?
    );
    
    // Attempt to load with password
    let document = pdfium.load_pdf_from_file(
        "confidential.pdf", 
        Some("secret_password")
    )?;
    
    println!("Successfully opened encrypted PDF");
    println!("Pages: {}", document.pages().len());
    
    Ok(())
}

C++ के माध्यम से कार्यशील PDF मेटाडेटा और प्रॉपर्टीज़

PDF की संरचना को समझना कई अनुप्रयोगों के लिए आवश्यक है। ओपन सोर्स PDFium-Render लाइब्रेरी दस्तावेज़ मेटाडेटा, पृष्ठ गिनती, आयाम और अन्य गुणों तक पूर्ण पहुँच प्रदान करती है। यह कार्यक्षमता दस्तावेज़ प्रबंधन प्रणालियों, PDF वैलिडेटर्स, या किसी भी अनुप्रयोग के लिए अमूल्य है जिसे उनके गुणों के आधार पर PDFs को वर्गीकृत या प्रोसेस करने की आवश्यकता होती है। निम्नलिखित कोड उदाहरण दर्शाता है कि प्रोग्रामर PDF दस्तावेज़ मेटाडेटा के साथ कैसे काम कर सकते हैं और विभिन्न गुणों तक आसानी से पहुँच सकते हैं।

C++ API के माध्यम से PDF दस्तावेज़ मेटाडेटा के साथ कैसे काम करें?

fn inspect_document_metadata() -> Result<(), PdfiumError> {
    let pdfium = Pdfium::new(
        Pdfium::bind_to_library(Pdfium::pdfium_platform_library_name_at_path("./"))
            .or_else(|_| Pdfium::bind_to_system_library())?
    );
    
    let document = pdfium.load_pdf_from_file("report.pdf", None)?;
    
    // Access document metadata
    let metadata = document.metadata();
    println!("Title: {}", metadata.title().unwrap_or("Untitled"));
    println!("Author: {}", metadata.author().unwrap_or("Unknown"));
    println!("Creator: {}", metadata.creator().unwrap_or("Unknown"));
    println!("Producer: {}", metadata.producer().unwrap_or("Unknown"));
    
    // Get page count
    let page_count = document.pages().len();
    println!("Total pages: {}", page_count);
    
    // Inspect individual page properties
    for (index, page) in document.pages().iter().enumerate() {
        let width = page.width();
        let height = page.height();
        println!("Page {}: {}x{} points", index + 1, width.value, height.value);
    }
    
    Ok(())
}
 हिन्दी