Rust में PDF रिपोर्ट जनरेशन: printpdf लाइब्रेरी

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

printpdf लाइब्रेरी के साथ Rust में PDF रिपोर्ट जनरेशन



आधुनिक वेब डेवलपमेंट में, PDF दस्तावेज़ बनाना एक आवश्यक कार्य बना हुआ है - चालान और रिपोर्ट तैयार करने से लेकर डेटा निर्यात करने तक। यदि आपका प्रोजेक्ट Rust में लिखा गया है या आप इसका उपयोग बैकएंड के लिए कर रहे हैं, तो printpdf लाइब्रेरी PDF जनरेशन के लिए एक विश्वसनीय उपकरण साबित होगी। इस लेख में, हम printpdf की क्षमताओं का पता लगाएंगे, कोड उदाहरण दिखाएंगे और चर्चा करेंगे कि इसे एक शैक्षिक प्रोजेक्ट में कैसे एकीकृत किया जाए।



printpdf क्या है?



printpdf बिना किसी बाहरी निर्भरता के PDF दस्तावेज़ बनाने के लिए एक शुद्ध Rust लाइब्रेरी है। यह निम्नलिखित की अनुमति देती है:

  • मनमानी सामग्री के साथ बहु-पृष्ठ दस्तावेज़ बनाना
  • विभिन्न फ़ॉन्ट (TrueType और OpenType सहित) के साथ टेक्स्ट जोड़ना
  • रेखाएँ, आयत, दीर्घवृत्त और जटिल पथ बनाना
  • चित्र (JPEG, PNG) एम्बेड करना
  • तालिकाओं और ग्रिड के साथ काम करना
  • रंग स्थान (RGB, CMYK, Grayscale) प्रबंधित करना


मुख्य लाभ पूर्ण स्वायत्तता है: LaTeX, wkhtmltopdf या अन्य सिस्टम स्थापित करने की आवश्यकता नहीं है। यह printpdf को शैक्षिक साइट pythonlib.ru के लिए एक आदर्श विकल्प बनाता है, जहाँ तैनाती में सरलता और उदाहरणों की पुनरुत्पादन क्षमता महत्वपूर्ण है।



स्थापना और पहला दस्तावेज़



Cargo.toml में निर्भरता जोड़ें:



[dependencies]printpdf = "0.7"


टेक्स्ट के साथ एक सरल PDF बनाएँ:



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

fn main() { // A4 प्रारूप का दस्तावेज़ बनाएँ let (doc, page1, layer1) = PdfDocument::new( "मेरा पहला PDF", 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( "नमस्ते, PythonLib!", 24.0, Mm(10.0), Mm(280.0), &font );

// फ़ाइल सहेजें let file = File::create("hello.pdf").unwrap(); let writer = BufWriter::new(file); doc.save(&mut writer).unwrap();

println!("PDF बनाया गया: hello.pdf");}


यह कोड एक शीर्षक के साथ एकल-पृष्ठ PDF बनाता है। ध्यान दें: use_text मिलीमीटर में निर्देशांक और पॉइंट में फ़ॉन्ट आकार लेता है।



ग्राफ़िक्स और रंग के साथ काम करना



printpdf प्रिमिटिव ड्राइंग का समर्थन करता है। आइए एक रेखा और भरे हुए आयत के साथ एक रिपोर्ट बनाएँ:



use printpdf::*;

fn create_report() -> (PdfDocumentReference, PdfPageIndex, PdfLayerIndex) { let (doc, page, layer) = PdfDocument::new( "रिपोर्ट", Mm(210.0), Mm(297.0), "Data" );

let layer = doc.get_page(page).get_layer(layer);

// लाल रेखा बनाएँ let points = vec![ (Point::new(Mm(20.0), Mm(250.0)), false), (Point::new(Mm(190.0), Mm(250.0)), false), ]; let line = Line { points, is_closed: false, }; layer.set_color(Color::Rgb(Rgb::new(1.0, 0.0, 0.0))); layer.add_line(line);

// भरा हुआ नीला आयत let rect = Polygon { vertices: vec![ (Point::new(Mm(50.0), Mm(200.0)), false), (Point::new(Mm(150.0), Mm(200.0)), false), (Point::new(Mm(150.0), Mm(180.0)), false), (Point::new(Mm(50.0), Mm(180.0)), false), ], is_closed: true, }; layer.set_color(Color::Rgb(Rgb::new(0.0, 0.0, 1.0))); layer.add_polygon(rect);

(doc, page, layer)}


रंग 0.0–1.0 की सीमा में सेट किए जाते हैं। CMYK के लिए Color::Cmyk(Cmyk::new(0.0, 1.0, 0.0, 0.0)) का उपयोग करें।



चित्र एम्बेड करना



रिपोर्ट में एक लोगो जोड़ें:



use printpdf::*;use std::fs::Fi                    

अनुशंसाएँ