إخراج تقرير ActiveReports كملف PDF

تحديث الصفحة :
تاريخ إنشاء الصفحة :

بيئة التشغيل

نوافذ
  • ويندوز 10 برو 22H2
فيجوال ستوديو
  • إصدار مجتمع Visual Studio 2022
التقارير النشطة ل .NET
  • تقارير نشطة ل .NET 16.0J

المتطلبات المسبقه

نوافذ
  • Windows 8.1
  • ويندوز ١٠
  • ويندوز ١١
  • ويندوز سيرفر 2012
  • ويندوز سيرفر 2012 R2
  • ويندوز سيرفر 2016
  • ويندوز سيرفر 2019
  • ويندوز سيرفر 2022
فيجوال ستوديو
  • فيجوال ستوديو 2017
  • فيجوال ستوديو 2019
  • فيجوال ستوديو 2022
الإطار الصافي
  • الإطار الصافي 4.6.2
  • الإطار الصافي 4.7
  • الإطار الصافي 4.8
.صافي
  • .NET Core 3.1
  • .NET 5
  • .NET 6
التقارير النشطة ل .NET
  • تقارير نشطة ل .NET 16.0J

كيفية الإخراج إلى ملف PDF

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

ومع ذلك ، في بعض الحالات ، قد لا ترغب في إزعاج المستخدم ، أو قد ترغب في توجيه ملف PDF بشكل منهجي. يصف هذا القسم كيفية إخراج ملف PDF برمجيا مباشرة من تقرير.

طرق إخراج ملف PDF والقيود

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

لهذا السبب ، إليك بعض الأمثلة على إخراج PDF البرمجي الذي يمكنك استخدامه كمرجع للعثور على الإخراج الذي يناسب مشروعك.

حول نموذج التقرير

ملف التقرير المضمن في قالب المشروع الجديد فارغ ، لذلك سنستخدم نموذج التقرير الرسمي. إليك بعض الاقتراحات ، لذا يرجى تنزيلها من أحد المواقع التالية.

في هذه الحالة ، سوف نستخدم نموذج التقرير التالي.

  • تقرير الصفحة : Estimate_page_ipa.rdlx
  • تقرير القسم: Invoice.rpx (مضمن في نموذج مشروع WebSample16)

تجسيد وإنشاء ملفات PDF (تقارير الصفحة/تقارير RDL)

يوجد "مرشح تصدير" لإخراج ملفات PDF ، ولكن في الإصدار 16 لا يمكن استخدامه إلا لتقارير الأقسام.

لذلك ، يجب إنشاء تقارير الصفحة / تقارير RDL باستخدام "ملحق الرسم" كما هو موضح في الصفحة أعلاه.

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

عند إنشاء مشروع، حدد تطبيق وحدة التحكم.

بعد إنشاء المشروع، أضف الحزم المطلوبة.

إليك ما ستضيفه: يرجى عدم الحصول على أحدث إصدار ، ولكن استخدم الإصدار الموضح أدناه. يبدو أن بعض مجموعات الحزم لا تعمل بشكل صحيح مع أحدث إصدار. يتم عرض علامة تحذير ، ولكن تجاهلها لأن التبعيات غير متطابقة. ومع ذلك ، هناك احتمال أن يتغير مع ترقيات الإصدار في المستقبل ، لذا يرجى تعديله في كل مرة. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf ومطلوبة للعرض إلى PDF.

  • جريب سيتي.أكتيف ريبورت.إكسبورت.بي دي إف (16.4.0)
  • جريب سيتي.وثائق.تصوير (6.0.3)
  • جريب سيتي.وثائق.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 المتاح لتقارير الأقسام.

يتم إنشاؤه في مشروع وحدة التحكم بنفس طريقة إنشاء تقارير الصفحة. يمكن تطبيق التعليمات البرمجية والإعدادات التي تقوم بإنشائها هنا على مشاريع أخرى.

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

  • جريب سيتي.أكتيف ريبورت.إكسبورت.بي دي إف (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 الناتج لمعرفة ما إذا كان على ما يرام.