Εξαγωγή αναφοράς ActiveReports ως αρχείου PDF

Σελίδα ενημέρωση :
Ημερομηνία δημιουργίας σελίδας :

Περιβάλλον λειτουργίας

παράθυρα
  • Windows 10 Pro 22H2
Οπτικό στούντιο
  • Έκδοση κοινότητας του Visual Studio 2022
ActiveReports για το .NET
  • ActiveReports για το .NET 16.0J

Προϋποθέσεις

παράθυρα
  • Windows 8.1
  • Παράθυρα 10
  • Παράθυρα 11
  • Τα Windows Server 2012
  • Windows Server 2012 R2
  • Τα Windows Server 2016
  • Τα Windows Server 2019
  • Τα Windows Server 2022
Οπτικό στούντιο
  • Visual Studio 2017
  • Visual Studio 2019
  • Visual Studio 2022
.NET Framework
  • NET Framework 4.6.2
  • NET Framework 4.7
  • NET Framework 4.8
.ΔΊΧΤΥ
  • .NET Core 3.1
  • .NET 5
  • .NET 6
ActiveReports για το .NET
  • ActiveReports για το .NET 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 πρέπει να δημιουργηθούν με την "Επέκταση σχεδίου" όπως περιγράφεται στην παραπάνω σελίδα.

Πρώτα απ 'όλα, θα δημιουργήσω ένα έργο, αλλά αυτή τη φορά θα το κάνω με μια απλή εφαρμογή κονσόλας. Είναι εξίσου εύκολο να εφαρμοστεί στις εκδόσεις επιφάνειας εργασίας και ιστού όπως και στην έκδοση ιστού.

Όταν δημιουργείτε ένα έργο, επιλέξτε Console App.

Αφού δημιουργήσετε το έργο, προσθέστε τα απαιτούμενα πακέτα.

Δείτε τι θα προσθέσετε: Μην λάβετε την πιο πρόσφατη έκδοση, αλλά χρησιμοποιήστε την έκδοση που περιγράφεται παρακάτω. Φαίνεται ότι ορισμένοι συνδυασμοί πακέτων δεν λειτουργούν σωστά με την πιο πρόσφατη έκδοση. Εμφανίζεται ένα προειδοποιητικό σημάδι, αλλά αγνοήστε το επειδή οι εξαρτήσεις δεν ταιριάζουν. Ωστόσο, υπάρχει πιθανότητα να αλλάξει με αναβαθμίσεις έκδοσης στο μέλλον, οπότε παρακαλούμε να το προσαρμόζετε κάθε φορά. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf και απαιτούνται για απόδοση σε PDF.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)
  • GrapeCity.Έγγραφα.Απεικόνιση (6.0.3)
  • GrapeCity.Έγγραφα.PDF (6.0.3)

Προσθέστε ένα αρχείο αναφοράς στο έργο σας. Η τοποθεσία μπορεί να είναι οπουδήποτε, αλλά αυτή τη φορά δημιουργώ έναν φάκελο και τον τοποθετώ Reports εκεί. Αυτή η θέση τοποθέτησης επηρεάζει τη διαδρομή που καθορίζετε αργότερα.

Στη συνέχεια, ανοίξτε τις ιδιότητες της αναφοράς που προσθέσατε.

Ορίστε την ενέργεια δόμησης σε Ενσωματωμένος πόρος. Αυτό σημαίνει ενσωμάτωση του πόρου μέσα σε ένα EXE (DLL). Η αναφορά φορτώνεται μοναδικά στην επιφάνεια εργασίας όπως και στο web.

Στη συνέχεια, γράψτε τον κώδικα για να φορτώσετε την αναφορά και να την εκτυπώσετε σε 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 που είναι διαθέσιμο για αναφορές ενοτήτων.

Δημιουργείται σε ένα έργο κονσόλας με τον ίδιο τρόπο όπως και για τις αναφορές σελίδων. Ο κώδικας και οι ρυθμίσεις που δημιουργείτε εδώ μπορούν να εφαρμοστούν σε άλλα έργα.

Αφού δημιουργήσετε το έργο, προσθέστε τα απαιτούμενα πακέτα. Αυτή τη φορά, θα εξάγουμε με ένα φίλτρο εξαγωγής, οπότε θα προσθέσουμε μόνο ένα.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)

Προσθέστε ένα αρχείο αναφοράς στο έργο σας. Η τοποθεσία μπορεί να είναι οπουδήποτε, αλλά αυτή τη φορά δημιουργώ έναν φάκελο και τον τοποθετώ Reports εκεί. Αυτή η θέση τοποθέτησης επηρεάζει τη διαδρομή που καθορίζετε αργότερα.

Στη συνέχεια, ανοίξτε τις ιδιότητες της αναφοράς που προσθέσατε.

Ορίστε την ενέργεια δόμησης σε Ενσωματωμένος πόρος. Αυτό σημαίνει ενσωμάτωση του πόρου μέσα σε ένα EXE (DLL). Η αναφορά φορτώνεται μοναδικά στην επιφάνεια εργασίας όπως και στο web.

Στη συνέχεια, γράψτε τον κώδικα για να φορτώσετε την αναφορά και να την εκτυπώσετε σε 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 εξόδου για να δείτε αν είναι εντάξει.