توليد تقارير PDF بلغة Rust: المكتبات والأمثلة العملية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

توليد تقارير PDF بلغة Rust: نظرة عامة على المكتبات وأمثلة عملية



Rust هي لغة برمجة أنظمة حديثة تكتسب شعبية في تطوير الويب، بما في ذلك إنشاء تطبيقات الخادم وأدوات توليد المستندات. إذا كنت بحاجة إلى إنشاء تقارير PDF بلغة Rust، فقد وصلت إلى المكان الصحيح. في هذه المقالة، سنستعرض المكتبات الرئيسية للعمل مع PDF، وإمكانياتها، ونقدم أمثلة عملية على الكود.



لماذا توليد PDF بلغة Rust؟

PDF هو تنسيق عالمي لتبادل المستندات والتقارير والفواتير. توفر Rust:

  • أداءً عالياً واستهلاكاً منخفضاً للذاكرة.
  • أماناً في التعامل مع الذاكرة بدون جامع القمامة.
  • تكاملاً سهلاً مع أطر الويب (Actix، Rocket، Axum).
  • توافقاً عبر المنصات (Windows، Linux، macOS).


المكتبات الرئيسية لـ PDF بلغة Rust



1. printpdf — العمل منخفض المستوى مع PDF

printpdf هي المكتبة الأكثر شيوعاً لإنشاء مستندات PDF "من الصفر". تتيح لك رسم الخطوط والنصوص والصور والجداول، مع التحكم في كل بكسل. مناسبة للتقارير المعقدة ذات التخطيط المخصص.



التثبيت:

[dependencies]printpdf = "0.7"


مثال: PDF بسيط مع نص

use printpdf::*;use std::fs::File;

fn main() { let (doc, page1, layer1) = PdfDocument::new( "تقريري الأول", Mm(210.0), Mm(297.0), "Layer 1", );

let font = doc.add_builtin_font(BuiltinFont::Helvetica).unwrap();

let current_layer = doc.get_page(page1).get_layer(layer1); current_layer.use_text("مرحباً بالعالم!", 24.0, Mm(20.0), Mm(280.0), &font);

doc.save(&mut File::create("output.pdf").unwrap()).unwrap();}


2. genpdf — توليد التقارير عالي المستوى

genpdf مبني فوق printpdf ويوفر واجهة برمجة تطبيقات مريحة لإنشاء مستندات تحتوي على جداول وعناوين وفقرات وأنماط. مثالي للتقارير حيث تكون البنية مهمة، وليس التموضع اليدوي.



التثبيت:

[dependencies]genpdf = "0.3"


مثال: تقرير مع جدول

use genpdf::{Document, SimplePageSettings};use genpdf::elements::{Paragraph, Table, TableLayout};use genpdf::fonts::FontFamily;

fn main() { let font_family = FontFamily::from_files( "/usr/share/fonts/truetype/dejavu/", "DejaVuSans", None, ).unwrap();

let mut doc = Document::new(font_family); doc.set_title("تقرير المبيعات");

let mut table = Table::new(TableLayout::new(vec![2, 3, 3])); table.row() .element(Paragraph::new("المنتج")) .element(Paragraph::new("الكمية")) .element(Paragraph::new("السعر"));

table.row() .element(Paragraph::new("حاسوب محمول")) .element(Paragraph::new("10")) .element(Paragraph::new("1200$"));

doc.push(table); doc.render_to_file("report.pdf").unwrap();}


3. wkhtmltopdf — HTML إلى PDF عبر WebKit

إذا كنت تفضل تصميم التقارير باستخدام HTML/CSS، استخدم الغلاف حول الأداة wkhtmltopdf. تقوم بتحويل قالب HTML إلى PDF، مع دعم الأنماط والصور وJavaScript.



التثبيت:

[dependencies]wkhtmltopdf = "0.4"


مثال: تحويل HTML

use wkhtmltopdf::*;

fn main() { let html = r#" <h1>تقرير الشهر</h1> <p>المبيعات: <strong>150 000 ₽</strong></p> <table border="1"> <tr><td>يناير</td><td>50 000</td></tr> <tr><td>فبراير</td><td>100 000</td></tr>

توصيات