ActiveReports रिपोर्ट को PDF फ़ाइल के रूप में आउटपुट करें

पेज अद्यतन :
पेज निर्माण की तारीख :

ऑपरेटिंग वातावरण

विंडोज़
  • विंडोज 10 प्रो 22H2
विजुअल स्टूडियो
  • विजुअल स्टूडियो 2022 सामुदायिक संस्करण
.NET के लिए ActiveReports
  • .NET 16.0J के लिए ActiveReports

आवश्यकताएँ

विंडोज़
  • Windows 8.1
  • विंडोज 10
  • विंडोज 11
  • विंडोज सर्वर 2012
  • विंडोज सर्वर 2012 आर 2
  • विंडोज सर्वर 2016
  • विंडोज सर्वर 2019
  • विंडोज सर्वर 2022
विजुअल स्टूडियो
  • विजुअल स्टूडियो 2017
  • विजुअल स्टूडियो 2019
  • विजुअल स्टूडियो 2022
.NET फ्रेमवर्क
  • नेट फ्रेमवर्क 4.6.2
  • नेट फ्रेमवर्क 4.7
  • नेट फ्रेमवर्क 4.8
।जाल
  • .NET कोर 3.1
  • .नेट 5
  • .नेट 6
.NET के लिए ActiveReports
  • .NET 16.0J के लिए ActiveReports

पीडीएफ फाइल में आउटपुट कैसे करें

यदि कोई उपयोगकर्ता रिपोर्ट को PDF फ़ाइल के रूप में चाहता है, तो इसे प्रदान करने का सबसे तेज़ तरीका रिपोर्ट को व्यूअर में देखना है। रिपोर्ट प्रदर्शित करने के अलावा, दर्शक के पास पीडीएफ जैसी फाइलों को प्रिंट और आउटपुट करने के लिए एक फ़ंक्शन होता है, इसलिए यदि आप दर्शक प्रदर्शित करते हैं, तो आप उपयोगकर्ता को पीडीएफ फाइल को आउटपुट करने के लिए कह सकते हैं।

हालाँकि, कुछ मामलों में, आप उपयोगकर्ता को परेशान नहीं करना चाह सकते हैं, या आप पीडीएफ फाइल को व्यवस्थित रूप से निर्देशित करना चाह सकते हैं। यह खंड वर्णन करता है कि किसी रिपोर्ट से सीधे पीडीएफ फाइल को प्रोग्रामेटिक रूप से कैसे आउटपुट किया जाए।

पीडीएफ फाइल आउटपुट तरीके और सीमाएं

पीडीएफ फाइलों को प्रोग्रामेटिक रूप से आउटपुट करने के कई तरीके हैं, लेकिन उनमें से सभी स्वीकार्य नहीं हैं। यह ActiveReports के संस्करण, प्लेटफ़ॉर्म, फ़्रेमवर्क और उसके द्वारा निष्पादित की जाने वाली रिपोर्ट के प्रकार के आधार पर भिन्न होता है। उदाहरण के लिए, ActiveReports 16 में, अनुभाग और पृष्ठ रिपोर्ट अलग-अलग प्रोग्रामेटिक रूप से आउटपुट होते हैं। इसका एक उदाहरण आधिकारिक पेज पर भी पाया जा सकता है।

इस कारण से, यहां प्रोग्रामेटिक पीडीएफ आउटपुट के कुछ उदाहरण दिए गए हैं जिनका उपयोग आप अपने प्रोजेक्ट के अनुकूल एक संदर्भ के रूप में कर सकते हैं।

नमूना रिपोर्ट के बारे में

नई परियोजना के लिए टेम्पलेट में शामिल रिपोर्ट फ़ाइल खाली है, इसलिए हम आधिकारिक नमूना रिपोर्ट का उपयोग करेंगे। यहां कुछ सुझाव दिए गए हैं, इसलिए कृपया उन्हें निम्नलिखित साइटों में से किसी एक से डाउनलोड करें।

इस मामले में, हम निम्नलिखित नमूना रिपोर्ट का उपयोग करेंगे।

  • पृष्ठ रिपोर्ट : Estimate_page_ipa.rdlx
  • अनुभाग रिपोर्ट: Invoice.rpx (WebSample16 नमूना प्रोजेक्ट में शामिल)

PDF रेंडर करें और जनरेट करें (पेज रिपोर्ट/RDL रिपोर्ट)

पीडीएफ आउटपुट करने के लिए एक "निर्यात फ़िल्टर" है, लेकिन संस्करण 16 में इसका उपयोग केवल अनुभाग रिपोर्ट के लिए किया जा सकता है।

इसलिए, पृष्ठ रिपोर्ट/आरडीएल रिपोर्ट को उपरोक्त पृष्ठ पर वर्णित "ड्राइंग एक्सटेंशन" के साथ उत्पन्न करने की आवश्यकता है।

सबसे पहले, मैं एक प्रोजेक्ट बनाऊंगा, लेकिन इस बार मैं इसे एक साधारण कंसोल एप्लिकेशन के साथ बनाऊंगा। डेस्कटॉप और वेब संस्करणों पर लागू करना उतना ही आसान है जितना कि वेब संस्करण के लिए।

जब आप कोई प्रोजेक्ट बनाते हैं, तो कंसोल ऐप चुनें।

प्रोजेक्ट बनाने के बाद, आवश्यक पैकेज जोड़ें।

यहां बताया गया है कि आप क्या जोड़ेंगे: कृपया नवीनतम संस्करण प्राप्त न करें, लेकिन नीचे वर्णित संस्करण का उपयोग करें। ऐसा लगता है कि कुछ पैकेज संयोजन नवीनतम संस्करण के साथ ठीक से काम नहीं करते हैं। एक चेतावनी चिह्न प्रदर्शित होता है, लेकिन निर्भरताएँ मेल नहीं खातीं, क्योंकि उस पर ध्यान न दें. हालाँकि, एक संभावना है कि यह भविष्य में संस्करण उन्नयन के साथ बदल जाएगा, इसलिए कृपया इसे हर बार समायोजित करें। GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf और पीडीएफ को प्रस्तुत करने के लिए आवश्यक हैं।

  • ग्रेपसिटी.एक्टिवरिपोर्ट्स.एक्सपोर्ट.पीडीएफ (16.4.0)
  • ग्रेपसिटी.डॉक्यूमेंट्स.इमेजिंग (6.0.3)
  • ग्रेपसिटी.डॉक्यूमेंट्स.पीडीएफ (6.0.3)

अपने प्रोजेक्ट में एक रिपोर्ट फ़ाइल जोड़ें। स्थान कहीं भी हो सकता है, लेकिन इस बार मैं एक फ़ोल्डर बना रहा हूं और इसे वहां डाल रहा हूं Reports । यह प्लेसमेंट स्थान आपके द्वारा बाद में निर्दिष्ट पथ को प्रभावित करता है.

इसके बाद, आपके द्वारा जोड़ी गई रिपोर्ट के गुण खोलें.

बिल्ड क्रिया को एम्बेडेड संसाधन पर सेट करें. इसका अर्थ है संसाधन को EXE (DLL) के अंदर एम्बेड करना। रिपोर्ट डेस्कटॉप पर विशिष्ट रूप से लोड की जाती है क्योंकि यह वेब पर होती है।

इसके बाद, रिपोर्ट लोड करने के लिए कोड लिखें और इसे पीडीएफ में प्रिंट करें। चूंकि यह एक कंसोल एप्लिकेशन है, इसलिए इसे प्रोग्राम में वर्णित किया जाना चाहिए.cs जैसा कि यह है, लेकिन यदि यह एक डेस्कटॉप है, तो इसे एक बटन ईवेंट आदि में वर्णित किया जाना चाहिए, और यदि यह ASP.NET है, तो इसे उस स्थान पर वर्णित किया जाना चाहिए जहां इसे पोस्ट करते समय संसाधित किया जाता है।

// レポートファイルがあるパス
var reportPath = "ConsoleApp1.Reports.Estimate_page_ipa.rdlx";

// 埋め込みリソースを Stream をして取り出す
var stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(reportPath);
if (stream == null) return;

// ページレポートに変換します
using var sr = new StreamReader(stream);
var pageReport = new GrapeCity.ActiveReports.PageReport(sr);

// PDF 描画拡張を定義します
var pdfRenderingExtension = new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension();

// メモリストリームとして出力する定義です
var outputProvider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();

// レポートを PDF にレンダリングします
pageReport.Document.Render(pdfRenderingExtension, outputProvider);

// Stream に変換します
var ps = outputProvider.GetPrimaryStream();
var outputStream = ps.OpenStream();

मैं विस्तार से नहीं बताऊंगा कि यह किस प्रकार का प्रसंस्करण है क्योंकि यह कोड की टिप्पणियों में लिखा गया है। कुंजी पहली पंक्ति में रिपोर्ट फ़ाइल का स्थान निर्दिष्ट करना है। प्रारूप निम्नानुसार <アセンブリ名>.<レポートファイルのパス> है, और सभी पथ विभाजक अवधि हैं।

अंतिम स्ट्रीम है, इसलिए कृपया इसे प्रसंस्करण सामग्री के अनुसार पीडीएफ में बदलें।

उदाहरण के लिए, यदि आप इसे स्थानीय फ़ाइल के रूप में सहेजना चाहते हैं, तो निम्न जोड़ें।

// ファイルにストリームを書き出します
using var fs = new FileStream("Output.pdf", FileMode.Create);
outputStream.CopyTo(fs);

यदि आप इसे ASP.NET के साथ डाउनलोड करना चाहते हैं, तो निम्नलिखित जोड़ें।

return File(outputStream, "application/pdf", "Output.pdf");

यह देखने के लिए आउटपुट पीडीएफ फाइल खोलने का प्रयास करें कि क्या यह ठीक है।

निर्यात फ़िल्टर (अनुभाग रिपोर्ट) का उपयोग करके आउटपुट पीडीएफ

अनुभाग रिपोर्ट के लिए उपलब्ध PDF निर्यात फ़िल्टर का उपयोग करें.

यह कंसोल प्रोजेक्ट में उसी तरह बनाया जाता है जैसे पेज रिपोर्ट के लिए। आपके द्वारा यहां बनाए गए कोड और सेटिंग्स को अन्य परियोजनाओं पर लागू किया जा सकता है।

प्रोजेक्ट बनाने के बाद, आवश्यक पैकेज जोड़ें। इस बार, हम एक निर्यात फ़िल्टर के साथ आउटपुट करेंगे, इसलिए हम केवल एक जोड़ेंगे।

  • ग्रेपसिटी.एक्टिवरिपोर्ट्स.एक्सपोर्ट.पीडीएफ (16.4.0)

अपने प्रोजेक्ट में एक रिपोर्ट फ़ाइल जोड़ें। स्थान कहीं भी हो सकता है, लेकिन इस बार मैं एक फ़ोल्डर बना रहा हूं और इसे वहां डाल रहा हूं Reports । यह प्लेसमेंट स्थान आपके द्वारा बाद में निर्दिष्ट पथ को प्रभावित करता है.

इसके बाद, आपके द्वारा जोड़ी गई रिपोर्ट के गुण खोलें.

बिल्ड क्रिया को एम्बेडेड संसाधन पर सेट करें. इसका अर्थ है संसाधन को EXE (DLL) के अंदर एम्बेड करना। रिपोर्ट डेस्कटॉप पर विशिष्ट रूप से लोड की जाती है क्योंकि यह वेब पर होती है।

इसके बाद, रिपोर्ट लोड करने के लिए कोड लिखें और इसे पीडीएफ में प्रिंट करें। चूंकि यह एक कंसोल एप्लिकेशन है, इसलिए इसे प्रोग्राम में वर्णित किया जाना चाहिए.cs जैसा कि यह है, लेकिन यदि यह एक डेस्कटॉप है, तो इसे एक बटन ईवेंट आदि में वर्णित किया जाना चाहिए, और यदि यह ASP.NET है, तो इसे उस स्थान पर वर्णित किया जाना चाहिए जहां इसे पोस्ट करते समय संसाधित किया जाता है।

// レポートファイルがあるパス
var reportPath = "ConsoleApp1.Reports.Invoice.rpx";

// 埋め込みリソースを Stream をして取り出す
var stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(reportPath);
if (stream == null) return;

// Stream を XML として読み込めるようにします
var xr = System.Xml.XmlReader.Create(stream);

// セクションレポートとして読み込みます
var sectionReport = new GrapeCity.ActiveReports.SectionReport();
sectionReport.LoadLayout(xr);
sectionReport.Run();

// PDF のエクスポートフィルターを作成します
var pdfExport = new GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport();

// メモリストリームに PDF の情報を書き出します
var outputStream = new System.IO.MemoryStream();
pdfExport.Export(sectionReport.Document, outputStream);
outputStream.Seek(0, SeekOrigin.Begin);

मैं विस्तार से नहीं बताऊंगा कि यह किस प्रकार का प्रसंस्करण है क्योंकि यह कोड की टिप्पणियों में लिखा गया है। कुंजी पहली पंक्ति में रिपोर्ट फ़ाइल का स्थान निर्दिष्ट करना है। प्रारूप निम्नानुसार <アセンブリ名>.<レポートファイルのパス> है, और सभी पथ विभाजक अवधि हैं।

अंतिम स्ट्रीम है, इसलिए कृपया इसे प्रसंस्करण सामग्री के अनुसार पीडीएफ में बदलें।

उदाहरण के लिए, यदि आप इसे स्थानीय फ़ाइल के रूप में सहेजना चाहते हैं, तो निम्न जोड़ें।

// ファイルにストリームを書き出します
using var fs = new FileStream("Output.pdf", FileMode.Create);
outputStream.CopyTo(fs);

यदि आप इसे ASP.NET के साथ डाउनलोड करना चाहते हैं, तो निम्नलिखित जोड़ें।

return File(outputStream, "application/pdf", "Output.pdf");

यह देखने के लिए आउटपुट पीडीएफ फाइल खोलने का प्रयास करें कि क्या यह ठीक है।