1. Produkti
  2.   PDF
  3.   C++
  4.   PDFium-Render
 
  

Bezmaksas C++ bibliotēka, lai renderētu PDF lapas uz attēlu un izvilktu tekstu.

Atvērtā koda C++ PDF apstrādes bibliotēka PDF lapu renderēšanai uz attēliem, teksta izvilkšanai, darbam ar ar paroli aizsargātiem PDF un piekļuvei dokumenta metadatiem, izmantojot C++ API.

Kas ir PDFium-Render?

PDF apstrāde un renderēšana C++ lietojumprogrammā vēsturiski ir bijusi sarežģīta uzdevums, bieži vien ietverot dārgas komerciālas licences vai neērti atvērtā koda rīkus. Iepazīstieties ar PDFium-Render – modernu, tikai galvenes (header‑only) C++ apvalka bibliotēku, kas piešķir Google PDFium dzinēja jaudu jūsu projektiem ar intuitīvu un tīru saskarni. PDFium‑render ir droša, idiomātiska Rust saistība ar PDFium, tādu pašu PDF renderēšanas dzini, kas nodrošina Google Chrome un Mozilla Firefox. Izveidojusi un uzturējusi ajrcarey, šī bibliotēka nodrošina izstrādātājiem spēcīgu rīkkopu PDF lapu renderēšanai attēlos, teksta izvilkšanai, PDF struktūru manipulēšanai un dokumenta metadatu piekļuvei — viss tas, izmantojot Rust atmiņas drošības garantijas.

Atšķirībā no daudzām PDF bibliotēkām, kas koncentrējas tikai uz izveidi vai pamata parsēšanu, PDFium-Render izceļas PDF satura renderēšanā ar pikseļu precizitāti, padarot to par ideālu risinājumu lietojumprogrammām, kas jāparāda, jākonvertē vai jāapstrādā esoši PDF dokumenti. Tas atbalsta dažādas pamata un uzlabotas funkcijas darbam ar PDF dokumentiem, piemēram, PDF failu un lapu renderēšanu, teksta izguvi un analīzi, darbu ar dokumenta metadatiem, piekļuvi un lapu objektu manipulēšanu, darbu ar ar paroli aizsargātiem PDF, un vēl vairāk. Viens no pdfium-render lielākajiem spēkiem ir tā platformu neatkarība. Bibliotēka darbojas nevainojami Windows, macOS un Linux sistēmās, abstraktējot platformas specifiskās atšķirības PDFium binārajās datnēs. Neatkarīgi no tā, vai veidojat dokumentu skatītāju, automatizējat PDF apstrādes darba plūsmas vai izguvāt datus no PDF, pdfium-render nodrošina nepieciešamos rīkus.

Previous Next

Sākšana ar PDFium-Render

Ieteicamais veids, kā instalēt PDFium-Render, ir izmantot CMake. Lūdzu, izmantojiet šādu komandu, lai veiktu gludu instalāciju.

Instalējiet PDFium-Render no GitHub

 vcpkg install pdfium-render

Instalējiet PDFium-Render no GitHub

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

Jūs varat arī instalēt to manuāli; lejupielādēt jaunākos izlaiduma failus tieši no GitHub repozitorija.

Augstas precizitātes PDF renderēšana ar C++

Atvērtā koda PDFium-Render bibliotēkas galvenā stiprība ir tās renderēšanas iespējas. Tā var pārveidot PDF lapas rasterattēlos ar izcili augstu kvalitāti, atbalstot dažādus izvades formātus, tostarp PNG, JPEG un BMP. Renderēšanas dzinējs apstrādā sarežģītas PDF funkcijas, piemēram, caurspīdīgumu, gradientus, iegultus fontus un vektorgrafiku ar tādu pašu precizitāti, kādu sagaidītu no Chrome PDF skatītāja. Šeit ir vienkāršs piemērs, kas parāda, kā programmatūras izstrādātāji var renderēt konkrētu lapu PNG attēla formātā C++ lietojumprogrammās.

Kā renderēt konkrētu PDF lapu PNG formātā, izmantojot 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(())
}

Kā izvilkt tekstu no konkrētām PDF lapas reģioniem, izmantojot C++ API?

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 ar paroles aizsargātu PDF, izmantojot C++

Drošība ir visaugstākā prioritāte, strādājot ar dokumentiem. PDFium-Render bezrūpīgi apstrādā ar paroli aizsargātus PDF, atbalstot gan lietotāja, gan īpašnieka paroles. Bibliotēka pārvalda autentifikāciju caurspīdīgi, atgriežot atbilstošas kļūdas, ja parole ir nepareiza vai ja PDF ir ierobežojumi, kas neļauj veikt noteiktas darbības. Šeit ir ļoti noderīgs piemērs, kas parāda, kā apstrādāt ar paroli aizsargātus PDF dokumentus C++ lietojumprogrammās.

Kā atvērt un ielādēt ar paroli aizsargātus PDF dokumentus, izmantojot C++ API?

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

Darbojošu PDF metadatu un īpašību apstrāde ar C++

PDF struktūras izpratne ir būtiska daudzām lietojumprogrammām. Atvērtā koda PDFium-Render bibliotēka nodrošina pilnīgu piekļuvi dokumenta metadatiem, lapu skaitam, izmēriem un citām īpašībām. Šī funkcionalitāte ir nenovērtējama, veidojot dokumentu pārvaldības sistēmas, PDF validācijas rīkus vai jebkuru lietojumprogrammu, kurai jākategorizē vai jāapstrādā PDF, balstoties uz to īpašībām. Zemāk esošais koda piemērs demonstrē, kā programmētāji var strādāt ar PDF dokumentu metadatiem un viegli piekļūt dažādām īpašībām.

Kā strādāt ar PDF dokumentu metadatiem, izmantojot C++ API?

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