1. Προϊόντα
  2.   PDF
  3.   C++
  4.   PDFium-Render
 
  

Δωρεάν βιβλιοθήκη C++ για απόδοση σελίδων PDF σε εικόνα & εξαγωγή κειμένου.

Ανοιχτή βιβλιοθήκη C++ επεξεργασίας PDF για απόδοση σελίδων PDF σε εικόνες, εξαγωγή κειμένου, εργασία με PDF προστατευμένα με κωδικό και πρόσβαση σε μεταδεδομένα εγγράφου μέσω C++ API.

Τι είναι το PDFium-Render;

Η διαχείριση και η απόδοση των PDF σε μια εφαρμογή C++ ήταν ιστορικά μια πολύπλοκη πρόκληση, συχνά απαιτώντας ακριβές εμπορικά licences ή δύσχρηστα εργαλεία ανοιχτού κώδικα. Εισάγουμε το PDFium-Render, μια σύγχρονη βιβλιοθήκη C++ μόνο με header που φέρνει τη δύναμη της μηχανής PDFium της Google στα έργα σας με ένα διαισθητικό και καθαρό περιβάλλον. Το PDFium-render είναι μια ασφαλής, ιδιωματική σύνδεση Rust για το PDFium, την ίδια μηχανή απόδοσης PDF που τροφοδοτεί το Google Chrome και το Mozilla Firefox. Δημιουργημένη και συντηρούμενη από τον ajrcarey, αυτή η βιβλιοθήκη παρέχει στους προγραμματιστές ένα ισχυρό σύνολο εργαλείων για την απόδοση σελίδων PDF σε εικόνες, την εξαγωγή κειμένου, τη διαχείριση δομών PDF και την πρόσβαση στα μεταδεδομένα εγγράφων — όλα ενώ εκμεταλλεύεται τις εγγυήσεις ασφαλείας μνήμης της Rust.

Σε αντίθεση με πολλές βιβλιοθήκες PDF που εστιάζουν μόνο στη δημιουργία ή στην βασική ανάλυση, το PDFium-Render διαπρέπει στην απόδοση του περιεχομένου PDF με ακρίβεια pixel-perfect, καθιστώντας το ιδανικό για εφαρμογές που χρειάζονται να εμφανίζουν, να μετατρέπουν ή να επεξεργάζονται υπάρχοντα έγγραφα PDF. Υποστηρίζει διάφορα βασικά και προχωρημένα χαρακτηριστικά για εργασία με έγγραφα PDF, όπως η απόδοση αρχείων και σελίδων PDF, η εξαγωγή και ανάλυση κειμένου, η εργασία με μεταδεδομένα εγγράφου, η πρόσβαση και η διαχείριση αντικειμένων σελίδας, η εργασία με PDF προστατευμένα με κωδικό πρόσβασης, και πολλά άλλα. Ένα από τα μεγαλύτερα πλεονεκτήματα του pdfium-render είναι η υποστήριξη πολλαπλών πλατφορμών. Η βιβλιοθήκη λειτουργεί άψογα σε Windows, macOS και Linux, αφαιρώντας τις διαφορές που σχετίζονται με την πλατφόρμα στα δυαδικά αρχεία PDFium. Είτε δημιουργείτε έναν προβολέα εγγράφων, αυτοματοποιείτε ροές εργασίας επεξεργασίας PDF, είτε εξάγετε δεδομένα από PDF, το pdfium-render παρέχει τα εργαλεία που χρειάζεστε.

Previous Next

Ξεκινώντας με το PDFium-Render

Ο συνιστώμενος τρόπος εγκατάστασης του PDFium-Render είναι η χρήση του CMake. Παρακαλώ χρησιμοποιήστε την παρακάτω εντολή για μια ομαλή εγκατάσταση.

Εγκατάσταση PDFium-Render μέσω GitHub

 vcpkg install pdfium-render

Εγκατάσταση PDFium-Render μέσω GitHub

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

Μπορείτε επίσης να το εγκαταστήσετε χειροκίνητα· κατεβάστε τα τελευταία αρχεία έκδοσης απευθείας από το αποθετήριο GitHub.

Απόδοση PDF Υψηλής Πιστότητας μέσω C++

Η κύρια δύναμη της ανοιχτού κώδικα βιβλιοθήκης PDFium-Render έγκειται στις δυνατότητες απόδοσής της. Μπορεί να μετατρέπει σελίδες PDF σε ραστερ εικόνες με εξαιρετική ποιότητα, υποστηρίζοντας διάφορες μορφές εξόδου όπως PNG, JPEG και BMP. Η μηχανή απόδοσης διαχειρίζεται σύνθετες δυνατότητες PDF όπως διαφάνεια, διαβαθμίσεις, ενσωματωμένες γραμματοσειρές και διανυσματικά γραφικά με την ίδια ακρίβεια που θα περιμένατε από τον προβολέα PDF του Chrome. Ακολουθεί ένα απλό παράδειγμα που δείχνει πώς οι προγραμματιστές λογισμικού μπορούν να αποδώσουν μια συγκεκριμένη σελίδα σε μορφή εικόνας PNG μέσα σε εφαρμογές C++.

Πώς να αποδώσετε μια συγκεκριμένη σελίδα PDF σε μορφή PNG μέσω C++;

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 εξαγωγής κειμένου είναι διαισθητικό και ισχυρό. Οι προγραμματιστές λογισμικού μπορούν να εξάγουν κείμενο από μεμονωμένες σελίδες, να αναζητούν συγκεκριμένες αλφαριθμητικές ακολουθίες και ακόμη να έχουν πρόσβαση σε πληροφορίες θέσης χαρακτήρων με μόνο λίγες γραμμές κώδικα — κρίσιμη για την υλοποίηση λειτουργιών όπως η επιλογή ή η επισήμανση κειμένου. Το παρακάτω παράδειγμα δείχνει πώς οι προγραμματιστές λογισμικού μπορούν να εξάγουν κείμενο από συγκεκριμένες περιοχές σελίδων PDF μέσα σε εφαρμογές C++.

Πώς να εξάγετε κείμενο από συγκεκριμένες περιοχές σελίδων PDF μέσω του API C++;

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(())
}

 

Word με PDF Προστατευμένο με Κωδικό μέσω C++

Η ασφάλεια είναι υψίστης σημασίας όταν εργάζεστε με έγγραφα. Το PDFium-Render διαχειρίζεται άψογα τα PDF με κωδικό πρόσβασης, υποστηρίζοντας τόσο τους κωδικούς χρήστη όσο και του ιδιοκτήτη. Η βιβλιοθήκη διαχειρίζεται τον έλεγχο ταυτότητας διαφανώς, επιστρέφοντας κατάλληλα σφάλματα εάν ο κωδικός είναι λανθασμένος ή εάν το PDF έχει περιορισμούς που εμποδίζουν ορισμένες λειτουργίες. Ακολουθεί ένα πολύ χρήσιμο παράδειγμα που δείχνει πώς να διαχειριστείτε PDF έγγραφα με κωδικό πρόσβασης σε εφαρμογές C++.

Πώς να ανοίξετε και να φορτώσετε PDF έγγραφα με προστασία κωδικού μέσω του API C++;

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(())
}

Διαχείριση Μεταδεδομένων και Ιδιοτήτων PDF μέσω C++

Η κατανόηση της δομής ενός PDF είναι απαραίτητη για πολλές εφαρμογές. Η ανοιχτού κώδικα βιβλιοθήκη PDFium-Render παρέχει πλήρη πρόσβαση στα μεταδεδομένα του εγγράφου, στον αριθμό σελίδων, στις διαστάσεις και σε άλλες ιδιότητες. Αυτή η λειτουργικότητα είναι ανεκτίμητη για την κατασκευή συστημάτων διαχείρισης εγγράφων, επικυρωτών PDF ή οποιασδήποτε εφαρμογής που χρειάζεται να κατηγοριοποιεί ή να επεξεργάζεται PDF με βάση τις ιδιότητές τους. Το παρακάτω παράδειγμα κώδικα δείχνει πώς οι προγραμματιστές μπορούν να εργάζονται με τα μεταδεδομένα των PDF εγγράφων και να έχουν εύκολη πρόσβαση σε διάφορες ιδιότητες.

Πώς να εργαστείτε με τα μεταδεδομένα εγγράφων PDF μέσω του API C++;

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(())
}
 Ελληνικά