خروجی گزارش ActiveReports به عنوان یک فایل PDF

صفحه به روز شده :
تاریخ ایجاد صفحه :

محیط عملیاتی

ویندوز
  • ویندوز 10 Pro 22H2
ویژوال استودیو
  • ویژوال استودیو 2022 نسخه انجمن
ActiveReports برای دات نت
  • ActiveReports برای دات نت 16.0J

پیش نیازها

ویندوز
  • Windows 8.1
  • ویندوز 10
  • ویندوز 11
  • ویندوز سرور 2012
  • ویندوز سرور 2012 R2
  • ویندوز سرور 2016
  • ویندوز سرور 2019
  • ویندوز سرور 2022
ویژوال استودیو
  • ویژوال استودیو 2017
  • ویژوال استودیو 2019
  • ویژوال استودیو 2022
دات نت فریم ورک
  • چارچوب نت 4.6.2
  • چارچوب نت 4.7
  • چارچوب نت 4.8
.خالص
  • دات نت کور 3.1
  • دات نت 5
  • دات نت 6
ActiveReports برای دات نت
  • ActiveReports برای دات نت 16.0J

نحوه خروجی به یک فایل PDF

اگر یک کاربر می خواهد یک گزارش را به عنوان یک فایل PDF ارائه دهد، سریعترین راه برای ارائه ان این است که گزارش را در بیننده مشاهده کنید. علاوه بر نمایش گزارش ها، بیننده عملکردی برای چاپ و خروجی فایل هایی مانند PDF دارد، بنابراین اگر بیننده را نمایش دهید، می توانید از کاربر بخواهید فایل PDF را خروجی دهد.

با این حال، در برخی موارد، ممکن است نخواهید کاربر را اذیت کنید یا ممکن است بخواهید به طور سیستماتیک فایل PDF را هدایت کنید. این بخش توضیح می دهد که چگونه به طور برنامه ریزی خروجی یک فایل PDF به طور مستقیم از یک گزارش.

روش های خروجی فایل PDF و محدودیت ها

راه های مختلفی برای خروجی برنامه ریزی فایل های PDF وجود دارد، اما همه انها قابل قبول نیستند. این بسته به نسخه ActiveReports، پلت فرم، چارچوب و نوع گزارشی که انجام می دهد متفاوت است. به عنوان مثال، در ActiveReports 16، گزارش های بخش و صفحه از نظر برنامه ریزی متفاوت هستند. یک مثال از این مورد را می توان در صفحه رسمی نیز یافت.

به همین دلیل، در اینجا چند نمونه از خروجی PDF برنامه ریزی شده است که می توانید به عنوان مرجع برای پیدا کردن یکی که مناسب پروژه شما است استفاده کنید.

درباره گزارش نمونه

فایل گزارش موجود در قالب پروژه جدید خالی است، بنابراین ما از گزارش نمونه رسمی استفاده خواهیم کرد. در اینجا چند پیشنهاد وجود دارد، بنابراین لطفا انها را از یکی از سایت های زیر دانلود کنید.

در این مورد، ما از گزارش نمونه زیر استفاده خواهیم کرد.

  • گزارش صفحه : Estimate_page_ipa.rdlx
  • گزارش بخش: Invoice.rpx (شامل پروژه نمونه WebSample16)

ارائه و تولید فایلهای PDF (Page Reports/RDL Reports)

یک "فیلتر صادرات" برای خروجی PDF ها وجود دارد، اما در نسخه 16 فقط می تواند برای گزارش های بخش استفاده شود.

بنابراین، گزارش های صفحه / گزارش های RDL باید با "Drawing Extension" همانطور که در صفحه بالا توضیح داده شده است، تولید شود.

اول از همه، من یک پروژه ایجاد خواهم کرد، اما این بار ان را با یک برنامه کنسول ساده انجام خواهم داد. این به همان اندازه اسان است که به نسخه های دسکتاپ و وب اعمال شود، همانطور که به نسخه وب است.

هنگامی که یک پروژه ایجاد می کنید، Console App را انتخاب کنید.

پس از ایجاد پروژه، بسته های مورد نیاز را اضافه کنید.

در اینجا چیزی است که شما اضافه خواهید کرد: لطفا اخرین نسخه را دریافت نکنید، اما از نسخه زیر استفاده کنید. به نظر می رسد که برخی از ترکیب بسته ها با اخرین نسخه به درستی کار نمی کنند. یک علامت هشدار نمایش داده می شود، اما ان را نادیده بگیرید زیرا وابستگی ها مطابقت ندارند. با این حال، این احتمال وجود دارد که با ارتقاء نسخه در اینده تغییر کند، بنابراین لطفا هر بار ان را تنظیم کنید. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf و نیاز به رندر به PDF.

  • انگور شهر.ActiveReports.Export.Pdf (16.4.0)
  • GrapeCity.Documents.Imaging (6.0.3)
  • GrapeCity.Documents.Pdf (6.0.3)

یک فایل گزارش به پروژه خود اضافه کنید. محل می تواند در هر نقطه باشد، اما این بار من یک پوشه ایجاد می کنم و ان را در ان قرار می دهم Reports . این مکان قرارگیری روی مسیری که بعدا مشخص میکنید تاثیر میگذارد.

سپس، ویژگی های گزارشی را که اضافه کرده اید باز کنید.

عمل ساخت را به منابع جاسازی شده تنظیم کنید. این بدان معنی است که منابع را در داخل یک EXE (DLL) جاسازی کنید. این گزارش به طور منحصر به فرد بر روی دسکتاپ بارگذاری می شود، همانطور که در وب است.

بعد، کد را برای بارگذاری گزارش بنویسید و ان را در PDF چاپ کنید. از انجا که این یک برنامه کنسول است، باید در برنامه توصیف شود.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();

من به طور دقیق توضیح نمی دهم که چه نوع پردازشی است زیرا در نظرات کد نوشته شده است. کلید این است که مکان پرونده گزارش را در خط اول مشخص کنید. فرمت به <アセンブリ名>.<レポートファイルのパス> شرح زیر است و تمام جداسازهای مسیر دوره هستند.

اخرین مورد Stream است، بنابراین لطفا ان را با توجه به محتوای پردازش به PDF تبدیل کنید.

به عنوان مثال، اگر می خواهید ان را به عنوان یک فایل محلی ذخیره کنید، زیر را اضافه کنید.

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

اگر می خواهید ان را با ASP.NET دانلود کنید، زیر را اضافه کنید.

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

سعی کنید فایل PDF خروجی را باز کنید تا ببینید ایا خوب است.

خروجی PDF با استفاده از فیلترهای صادرات (گزارش بخش)

از فیلتر صادرات PDF موجود برای گزارش های بخش استفاده کنید.

این در یک پروژه کنسول به همان شیوه ای که برای گزارش های صفحه ایجاد شده است. کد و تنظیماتی که در اینجا ایجاد می کنید می تواند برای پروژه های دیگر اعمال شود.

پس از ایجاد پروژه، بسته های مورد نیاز را اضافه کنید. این بار، ما با یک فیلتر صادرات خروجی خواهیم داشت، بنابراین فقط یک فیلتر اضافه خواهیم کرد.

  • انگور شهر.ActiveReports.Export.Pdf (16.4.0)

یک فایل گزارش به پروژه خود اضافه کنید. محل می تواند در هر نقطه باشد، اما این بار من یک پوشه ایجاد می کنم و ان را در ان قرار می دهم Reports . این مکان قرارگیری روی مسیری که بعدا مشخص میکنید تاثیر میگذارد.

سپس، ویژگی های گزارشی را که اضافه کرده اید باز کنید.

عمل ساخت را به منابع جاسازی شده تنظیم کنید. این بدان معنی است که منابع را در داخل یک EXE (DLL) جاسازی کنید. این گزارش به طور منحصر به فرد بر روی دسکتاپ بارگذاری می شود، همانطور که در وب است.

بعد، کد را برای بارگذاری گزارش بنویسید و ان را در PDF چاپ کنید. از انجا که این یک برنامه کنسول است، باید در برنامه توصیف شود.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);

من به طور دقیق توضیح نمی دهم که چه نوع پردازشی است زیرا در نظرات کد نوشته شده است. کلید این است که مکان پرونده گزارش را در خط اول مشخص کنید. فرمت به <アセンブリ名>.<レポートファイルのパス> شرح زیر است و تمام جداسازهای مسیر دوره هستند.

اخرین مورد Stream است، بنابراین لطفا ان را با توجه به محتوای پردازش به PDF تبدیل کنید.

به عنوان مثال، اگر می خواهید ان را به عنوان یک فایل محلی ذخیره کنید، زیر را اضافه کنید.

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

اگر می خواهید ان را با ASP.NET دانلود کنید، زیر را اضافه کنید.

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

سعی کنید فایل PDF خروجی را باز کنید تا ببینید ایا خوب است.