PDF Səhifələrini Şəkilə Çevirmək və Mətn Çıxarmaq üçün Pulsuz C++ Kitabxanası.
PDF Səhifələrini Şəkillərə Çevirmək, Mətn Çıxarmaq, Şifrə ilə Qorunan PDF-lərlə İşləmək və C++ API vasitəsilə Sənəd Meta Məlumatlarına Daxil Olmaq üçün Açıq Mənbəli C++ PDF Emal Kitabxanası.
PDFium-Render nədir?
C++ tətbiqində PDF-lərin idarə edilməsi və renderlənməsi tarixən mürəkkəb bir problem olub, tez-tez bahalı kommersiya lisenziyaları və ya çətin açıq mənbə alətləri tələb edirdi. PDFium-Render ilə tanış olun, müasir, yalnız başlıqdan ibarət C++ wrapper kitabxanası, Google-un PDFium mühərrikinin gücünü layihələrinizə intuitiv və təmiz interfeys ilə gətirir. PDFium-render, PDFium üçün təhlükəsiz, idiomatik Rust bağlamasıdır, Google Chrome və Mozilla Firefox-u gücləndirən eyni PDF renderləmə mühərriki. ajrcarey tərəfindən yaradılıb və saxlanılan bu kitabxana, inkişafçılara PDF səhifələrini şəkillərə renderləmək, mətn çıxarmaq, PDF strukturlarını manipulyasiya etmək və sənəd metadata‑sına daxil olmaq üçün güclü bir alət dəsti təqdim edir — hamısı Rust-un yaddaş təhlükəsizliyi zəmanətindən istifadə edərək.
Bir çox PDF kitabxanalarının yalnız yaradılma və ya əsas təhlilə yönəldiyi halda, PDFium-Render PDF məzmununu piksellə tam dəqiqliklə renderləməkdə üstünlük göstərir, bu da mövcud PDF sənədlərini göstərmək, çevirmək və ya emal etmək üçün tətbiqlər üçün ideal edir. O, PDF sənədləri ilə işləmək üçün müxtəlif əsas və qabaqcıl xüsusiyyətləri dəstəkləyir, məsələn PDF fayllarını və səhifələrini renderləmək, mətn çıxarma və təhlil, sənəd meta məlumatları ilə işləmək, səhifə obyektlərinə giriş və manipulyasiya, şifrə ilə qorunan PDF-lərlə işləmək və daha çox. pdfium-render-in ən böyük güclərindən biri onun çoxplatformalı dəstəyidir. Kitabxana Windows, macOS və Linux üzərində problemsiz işləyir, PDFium ikili fayllarındakı platforma‑spesifik fərqlilikləri aradan qaldırır. Sənəd görüntüləyicisi qurursunuz, PDF emalı iş axınlarını avtomatlaşdırırsınız, ya da PDF‑lərdən məlumat çıxarırsınız, pdfium-render sizə lazım olan alətləri təqdim edir.
PDFium-Render ilə Başlamaq
PDFium-Render-i quraşdırmağın tövsiyə olunan yolu CMake istifadə etməkdir. Zəhmət olmasa, problemsiz quraşdırma üçün aşağıdakı əmri istifadə edin.
PDFium-Render-i GitHub vasitəsilə quraşdırın
vcpkg install pdfium-render
PDFium-Render-i GitHub vasitəsilə quraşdırın
Git clone https://github.com/ajrcarey/pdfium-render.git Siz həmçinin onu əl ilə quraşdıra bilərsiniz; son buraxılış fayllarını birbaşa GitHub deposundan yükləyin.
C++ vasitəsilə Yüksək Keyfiyyətli PDF Görüntüləmə
Açıq mənbəli PDFium-Render kitabxanasının əsas gücü onun renderləmə imkanlarında yatır. O, PDF səhifələrini yüksək keyfiyyətli raster şəkillərə çevirə bilir, PNG, JPEG və BMP kimi müxtəlif çıxış formatlarını dəstəkləyir. Render mühərriki şəffaflıq, gradientlər, daxil edilmiş şriftlər və vektor qrafikləri kimi mürəkkəb PDF xüsusiyyətlərini Chrome-un PDF görüntüləyicisində gözlədiyiniz eyni dəqiqliklə idarə edir. Budur sadə bir nümunə, hansı ki, proqramçılara C++ tətbiqlərində müəyyən bir səhifəni PNG şəkil formatına necə renderləmək olduğunu göstərir.
C++ vasitəsilə müəyyən bir PDF səhifəsini PNG formatına necə renderləmək olar?
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++ Kitabxanası vasitəsilə Mətn Çıxarışı və Analizi
Renderləmədən əlavə, PDFium-Render kitabxanası geniş mətn çıxarışı imkanları təqdim edir. Mətn çıxarışı API-si intuitiv və güclüdür. Proqramçılar fərdi səhifələrdən mətn çıxara, müəyyən sətirləri axtara və hətta yalnız bir neçə kod sətiri ilə xarakter səviyyəsində mövqe məlumatına daxil ola bilərlər — bu, mətn seçimi və ya vurğulama kimi funksiyaların həyata keçirilməsi üçün vacibdir. Aşağıdakı nümunə göstərir ki, proqramçılar C++ tətbiqlərində müəyyən PDF səhifə bölgələrindən mətn necə çıxara bilərlər.
C++ API vasitəsilə müəyyən PDF səhifə bölgələrindən mətn necə çıxarılır?
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++ vasitəsilə Şifrə Qorunmuş PDF ilə Word
Təhlükəsizlik sənədlərlə işləyərkən ən vacibdir. PDFium-Render şifrə ilə qorunan PDF-ləri problemsiz idarə edir, həm istifadəçi, həm də sahiblə şifrələri dəstəkləyir. Kitabxana autentifikasiyanı şəffaf şəkildə həyata keçirir və şifrə yanlışdırsa və ya PDF müəyyən əməliyyatları məhdudlaşdıran məhdudiyyətlərə malikdirsə uyğun səhvləri qaytarır. Budur, C++ tətbiqlərində şifrə ilə qorunan PDF sənədlərini necə idarə edəcəyinizi göstərən çox faydalı bir nümunə.
C++ API vasitəsilə şifrə ilə qorunan PDF sənədlərini necə açmaq və yükləmək olar?
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++ vasitəsilə PDF Metadatası və Xüsusiyyətləri ilə İşləmək
PDF-in strukturunu anlamaq bir çox tətbiq üçün vacibdir. Açıq mənbəli PDFium-Render kitabxanası sənədin meta məlumatlarına, səhifə sayına, ölçülərinə və digər xüsusiyyətlərinə tam giriş imkanı verir. Bu funksionallıq sənəd idarəetmə sistemləri, PDF doğrulayıcıları və ya PDF-ləri onların xüsusiyyətlərinə əsasən kateqoriyalaşdırmaq və ya emal etmək lazım olan hər hansı bir tətbiq üçün dəyərsizdir. Aşağıdakı kod nümunəsi proqramçılara PDF sənədlərinin meta məlumatları ilə necə işləmək və müxtəlif xüsusiyyətlərə asanlıqla necə daxil olmaq göstərir.
C++ API vasitəsilə PDF sənədlərinin metadata ilə necə işləmək olar?
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(())
}