PDF পেজকে ইমেজে রেন্ডার এবং টেক্সট এক্সট্র্যাক্ট করার জন্য ফ্রি C++ লাইব্রেরি।
PDF পেজকে ইমেজে রেন্ডার করা, টেক্সট এক্সট্র্যাক্ট করা, পাসওয়ার্ড সুরক্ষিত PDF-গুলোর সাথে কাজ করা এবং C++ API এর মাধ্যমে ডকুমেন্ট মেটাডেটা অ্যাক্সেস করার জন্য ওপেন সোর্স C++ PDF প্রোসেসিং লাইব্রেরি।
PDFium-Render কি?
C++ অ্যাপ্লিকেশনের মধ্যে PDF হ্যান্ডলিং এবং রেন্ডারিং ঐতিহাসিকভাবে একটি জটিল চ্যালেঞ্জ ছিল, প্রায়শই ব্যয়বহুল বাণিজ্যিক লাইসেন্স বা জটিল ওপেন-সোর্স টুলসের প্রয়োজন হতো। এখানে আসে PDFium-Render, একটি আধুনিক, হেডার-অনলি C++ র্যাপার লাইব্রেরি যা গুগলের PDFium ইঞ্জিনের শক্তি আপনার প্রকল্পে একটি স্বজ্ঞাত এবং পরিষ্কার ইন্টারফেসের মাধ্যমে নিয়ে আসে। PDFium-render হল PDFium-এর জন্য একটি নিরাপদ, স্বাভাবিক Rust বাইন্ডিং, যা গুগল ক্রোম এবং মোজিলা ফায়ারফক্সকে শক্তি প্রদানকারী একই PDF রেন্ডারিং ইঞ্জিন। ajrcarey দ্বারা তৈরি এবং রক্ষণাবেক্ষিত, এই লাইব্রেরি ডেভেলপারদেরকে PDF পেজকে ইমেজে রেন্ডার করা, টেক্সট এক্সট্র্যাক্ট করা, PDF স্ট্রাকচার ম্যানিপুলেট করা এবং ডকুমেন্ট মেটাডেটা অ্যাক্সেস করার জন্য একটি শক্তিশালী টুলকিট প্রদান করে—সবই Rust-এর মেমরি সেফটি গ্যারান্টি ব্যবহার করে।
অনেক PDF লাইব্রেরি যেগুলো শুধুমাত্র সৃষ্টিকর্ম বা মৌলিক পার্সিং-এ মনোযোগ দেয়, তার বিপরীতে PDFium-Render পিক্সেল-সঠিক নির্ভুলতার সঙ্গে PDF কন্টেন্ট রেন্ডারিং-এ উৎকৃষ্ট, যা এমন অ্যাপ্লিকেশনগুলোর জন্য আদর্শ যা বিদ্যমান PDF ডকুমেন্ট প্রদর্শন, রূপান্তর বা প্রক্রিয়াকরণ প্রয়োজন। এটি PDF ডকুমেন্টের সঙ্গে কাজ করার জন্য বিভিন্ন মৌলিক ও উন্নত ফিচার সমর্থন করে, যেমন PDF ফাইল ও পেজ রেন্ডারিং, টেক্সট এক্সট্র্যাকশন ও বিশ্লেষণ, ডকুমেন্ট মেটাডেটা নিয়ে কাজ করা, পেজ অবজেক্টে প্রবেশ ও পরিবর্তন করা, পাসওয়ার্ড-সুরক্ষিত PDF-গুলোর সঙ্গে কাজ করা, এবং আরও অনেক কিছু। pdfium-render-এর অন্যতম বড় শক্তি হল এর ক্রস-প্ল্যাটফর্ম সাপোর্ট। লাইব্রেরিটি উইন্ডোজ, macOS এবং লিনাক্সে নির্বিঘ্নে কাজ করে, PDFium বাইনারির প্ল্যাটফর্ম-নির্দিষ্ট পার্থক্যগুলোকে বিমূর্ত করে। আপনি ডকুমেন্ট ভিউয়ার তৈরি করুন, PDF প্রক্রিয়াকরণ ওয়ার্কফ্লো স্বয়ংক্রিয় করুন, অথবা PDF থেকে ডেটা এক্সট্র্যাক্ট করুন, pdfium-render আপনার প্রয়োজনীয় টুল সরবরাহ করে।
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 = 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 পাসওয়ার্ড-সুরক্ষিত PDF গুলোকে সহজে হ্যান্ডেল করে, ব্যবহারকারী ও মালিকের পাসওয়ার্ড উভয়ই সমর্থন করে। লাইব্রেরি স্বচ্ছভাবে প্রমাণীকরণ পরিচালনা করে, যদি পাসওয়ার্ড ভুল হয় অথবা 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 ভ্যালিডেটর, অথবা যেকোনো অ্যাপ্লিকেশন যা তাদের বৈশিষ্ট্যের ভিত্তিতে PDF গুলোকে শ্রেণীবদ্ধ বা প্রক্রিয়া করতে চায়, তার জন্য অমূল্য। নিম্নলিখিত কোড উদাহরণটি দেখায় কীভাবে প্রোগ্রামাররা 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(())
}