Rust पर PDF जनरेशन: लाइब्रेरीज़ का अवलोकन और कोड उदाहरण

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

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

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

Rust में PDF जनरेशन: लाइब्रेरीज़ का अवलोकन और व्यावहारिक उदाहरण



Rust एक सिस्टम प्रोग्रामिंग भाषा है जिसका उपयोग तेजी से उच्च-प्रदर्शन वाले सर्वर अनुप्रयोगों, वेब सेवाओं और कमांड-लाइन टूल्स के निर्माण के लिए किया जा रहा है। ऐसी परियोजनाओं को विकसित करते समय एक सामान्य कार्य PDF दस्तावेज़ तैयार करना है: रिपोर्ट, चालान, प्रमाणपत्र या केवल फ़ॉर्मेटिंग के साथ टेक्स्ट फ़ाइलें। इस लेख में, हम Rust पर PDF के साथ काम करने के लिए मुख्य लाइब्रेरीज़, उनकी क्षमताओं, कोड उदाहरणों और चयन मानदंडों की समीक्षा करेंगे।



Rust पर PDF जनरेशन के लिए लोकप्रिय लाइब्रेरीज़



वर्तमान में, Rust पारिस्थितिकी तंत्र में तीन मुख्य लाइब्रेरीज़ हैं जो सक्रिय रूप से समर्थित और समुदाय द्वारा उपयोग की जाती हैं:



  • printpdf — सामग्री पर पूर्ण नियंत्रण के साथ PDF दस्तावेज़ बनाने के लिए निम्न-स्तरीय लाइब्रेरी। टेक्स्ट, चित्र, वेक्टर ग्राफिक्स, तालिकाओं और फ़ॉन्ट एम्बेडिंग का समर्थन करता है।
  • genpdf — printpdf पर आधारित उच्च-स्तरीय लाइब्रेरी। टेक्स्ट, पैराग्राफ, तालिकाओं और शैलियों के साथ काम करने के लिए सुविधाजनक अमूर्तता प्रदान करता है।
  • pdf_writer — एक और निम्न-स्तरीय लाइब्रेरी जो न्यूनतमता और प्रदर्शन पर केंद्रित है। सीधे PDF फ़ाइलें लिखने की अनुमति देता है, लेकिन PDF प्रारूप की गहरी समझ की आवश्यकता होती है।


printpdf लाइब्रेरी



printpdf Rust पर PDF जनरेशन के लिए सबसे लोकप्रिय लाइब्रेरी में से एक है। यह ग्राफिकल प्रिमिटिव, टेक्स्ट और फ़ॉन्ट के साथ काम करने के लिए API प्रदान करता है। मुख्य क्षमताएँ:

  • बहु-पृष्ठ दस्तावेज़ बनाना;
  • TrueType/OpenType फ़ॉन्ट एम्बेड करना;
  • रेखाएँ, आयत, वृत्त और अन्य आकृतियाँ बनाना;
  • चित्र सम्मिलित करना (PNG, JPEG);
  • रंगों और पारदर्शिता के साथ काम करना;
  • Unicode और सिरिलिक लिपि का समर्थन।


printpdf का उपयोग करके टेक्स्ट के साथ एक सरल PDF बनाने का उदाहरण:



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

fn main() { // A4 प्रारूप का दस्तावेज़ बनाएँ let (doc, page1, layer1) = PdfDocument::new( "Rust पर PDF का उदाहरण", Mm(210.0), Mm(297.0), "Layer 1", );

// वर्तमान फ़ॉन्ट प्राप्त करें (अंतर्निहित Helvetica) let font = doc.add_builtin_font(BuiltinFont::Helvetica).unwrap();

// ड्राइंग के लिए लेयर का उपयोग करें let layer = doc.get_page(page1).get_layer(layer1);

// टेक्स्ट जोड़ें layer.use_text("नमस्ते, दुनिया! Rust से PDF", 24.0, Mm(50.0), Mm(250.0), &font);

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


genpdf लाइब्रेरी



genpdf printpdf के ऊपर एक रैपर है जो उच्च-स्तरीय API प्रदान करता है। यह सरल फ़ॉर्मेटिंग वाले दस्तावेज़ बनाने के लिए आदर्श है: शीर्षक, पैराग्राफ, सूचियाँ, तालिकाएँ। मुख्य लाभ:

  • पृष्ठ विराम का स्वचालित प्रबंधन;
  • शैलियों का समर्थन (बोल्ड, इटैलिक, रेखांकित);
  • कोशिकाओं और सीमाओं के साथ तालिकाओं के लिए अंतर्निहित समर्थन;
  • तत्वों को जोड़ने के लिए सरल इंटरफ़ेस।


genpdf का उपयोग करके तालिका के साथ PDF बनाने का उदाहरण:



use genpdf::*;use genpdf::elements::*;use std::fs::File;

fn main() { // दस्तावेज़ बनाएँ let mut doc = Document::new("Liberation Serif") .expect("फ़ॉन्ट लोड करने में विफल");

// डिफ़ॉल्ट शैली सेट करें doc.set_title("बिक्री रिपोर्ट");

// पैराग्राफ जोड़ें doc.push(Paragraph::new("महीने के अनुसार बिक्री:"));

// तालिका बनाएँ let mut table = Table::new(vec![2, 3, 2]); table.set_cell_border_style(BorderStyle::Solid); table.push_row(vec![ "महीना".to_string(), "राजस्व, रु.".to_stri

अनुशंसाएँ