Generare un report ActiveReports come file PDF

Pagina aggiornata :
Data di creazione della pagina :

Ambiente operativo

Finestre
  • Windows 10 Pro 22H2
Visual Studio
  • Visual Studio 2022 Community Edition
ActiveReports per .NET
  • ActiveReports per .NET 16.0J

Prerequisiti

Finestre
  • Windows 8.1
  • finestre 10
  • finestre 11
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows Server 2019
  • Windows Server 2022
Visual Studio
  • Visual Studio 2017
  • Visual Studio 2019
  • Visual Studio 2022
.NET Framework
  • NET Framework 4.6.2
  • NET Framework 4.7
  • NET Framework 4.8
.RETE
  • .NET Core 3.1.NET Core 3.1.NET Core 3.1.NET Core 3.
  • .NET 5.NET 5
  • .NET 6
ActiveReports per .NET
  • ActiveReports per .NET 16.0J

Come eseguire l'output in un file PDF

Se un utente desidera un report come file PDF, il modo più rapido per fornirlo consiste nel visualizzare il report nel visualizzatore. Oltre a visualizzare i report, il visualizzatore dispone di una funzione per stampare e produrre file come PDF, quindi se si visualizza il visualizzatore, è possibile chiedere all'utente di generare il file PDF.

Tuttavia, in alcuni casi, potresti non voler disturbare l'utente o potresti voler indirizzare sistematicamente il file PDF. In questa sezione viene descritto come eseguire l'output a livello di codice di un file PDF direttamente da un report.

Metodi e limitazioni dell'output dei file PDF

Esistono diversi modi per generare file PDF a livello di codice, ma non tutti sono accettabili. Questo varia a seconda della versione di ActiveReports, della piattaforma, del framework e del tipo di report eseguito. Ad esempio, in ActiveReports 16, i report di sezione e pagina vengono emessi in modo diverso a livello di codice. Un esempio di questo lo trovate anche sulla pagina ufficiale.

Per questo motivo, ecco alcuni esempi di output PDF programmatico che puoi utilizzare come riferimento per trovare quello più adatto al tuo progetto.

Informazioni sul report di esempio

Il file di report incluso nel modello per il nuovo progetto è vuoto, quindi utilizzeremo il report di esempio ufficiale. Ecco alcuni suggerimenti, quindi scaricali da uno dei seguenti siti.

In questo caso, utilizzeremo il seguente report di esempio.

  • Rapporto pagina : Estimate_page_ipa.rdlx
  • Report di sezione: Invoice.rpx (incluso nel progetto di esempio WebSample16)

Rendering e generazione di PDF (Report di pagina/Report RDL)

Esiste un "filtro di esportazione" per l'output dei PDF, ma nella versione 16 può essere utilizzato solo per i report di sezione.

Pertanto, i report di pagina/report RDL devono essere generati con l'"Estensione disegno" come descritto nella pagina precedente.

Prima di tutto, creerò un progetto, ma questa volta lo farò con una semplice applicazione console. È facile da applicare alle versioni desktop e web come alla versione web.

Quando crei un progetto, seleziona App console.

Dopo aver creato il progetto, aggiungere i pacchetti necessari.

Ecco cosa aggiungerai: Si prega di non scaricare l'ultima versione, ma di utilizzare la versione descritta di seguito. Sembra che alcune combinazioni di pacchetti non funzionino correttamente con l'ultima versione. Viene visualizzato un segno di avviso, ma ignorarlo perché le dipendenze non corrispondono. Tuttavia, c'è la possibilità che cambi con gli aggiornamenti della versione in futuro, quindi si prega di modificarlo ogni volta. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf e sono necessari per eseguire il rendering in PDF.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)
  • GrapeCity.Documents.Imaging (6.0.3)
  • GrapeCity.Documents.Pdf (6.0.3)

Aggiungere un file di report al progetto. La posizione può essere ovunque, ma questa volta sto Reports creando una cartella e la metto lì. Questa posizione di posizionamento influisce sul percorso specificato in seguito.

Successivamente, apri le proprietà del report che hai aggiunto.

Impostare l'azione di compilazione su Risorsa incorporata. Ciò significa incorporare la risorsa all'interno di un file EXE (DLL). Il report viene caricato in modo univoco sul desktop così come sul Web.

Successivamente, scrivi il codice per caricare il report e stampalo in PDF. Poiché si tratta di un'applicazione console, dovrebbe essere descritta in Programma.cs così com'è, ma se si tratta di un desktop, dovrebbe essere descritta in un evento pulsante, ecc., e se è ASP.NET, dovrebbe essere descritta nel punto in cui viene elaborata quando viene pubblicata.

// レポートファイルがあるパス
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();

Non spiegherò nel dettaglio di che tipo di elaborazione si tratta perché è scritto nei commenti del codice. La chiave consiste nello specificare il percorso del file di report nella prima riga. Il formato è il <アセンブリ名>.<レポートファイルのパス> seguente e tutti i separatori di percorso sono punti.

L'ultimo è Stream, quindi convertilo in PDF in base al contenuto dell'elaborazione.

Ad esempio, se si desidera salvarlo come file locale, aggiungere quanto segue.

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

Se vuoi scaricarlo con ASP.NET, aggiungi quanto segue.

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

Prova ad aprire il file PDF di output per vedere se va bene.

Output PDF utilizzando i filtri di esportazione (report di sezione)

Utilizzare il filtro di esportazione PDF disponibile per i report di sezione.

Viene creato in un progetto console nello stesso modo dei report di pagina. Il codice e le impostazioni creati qui possono essere applicati ad altri progetti.

Dopo aver creato il progetto, aggiungere i pacchetti necessari. Questa volta, l'output verrà restituito con un filtro di esportazione, quindi ne aggiungeremo solo uno.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)

Aggiungere un file di report al progetto. La posizione può essere ovunque, ma questa volta sto Reports creando una cartella e la metto lì. Questa posizione di posizionamento influisce sul percorso specificato in seguito.

Successivamente, apri le proprietà del report che hai aggiunto.

Impostare l'azione di compilazione su Risorsa incorporata. Ciò significa incorporare la risorsa all'interno di un file EXE (DLL). Il report viene caricato in modo univoco sul desktop così come sul Web.

Successivamente, scrivi il codice per caricare il report e stampalo in PDF. Poiché si tratta di un'applicazione console, dovrebbe essere descritta in Programma.cs così com'è, ma se si tratta di un desktop, dovrebbe essere descritta in un evento pulsante, ecc., e se è ASP.NET, dovrebbe essere descritta nel punto in cui viene elaborata quando viene pubblicata.

// レポートファイルがあるパス
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);

Non spiegherò nel dettaglio di che tipo di elaborazione si tratta perché è scritto nei commenti del codice. La chiave consiste nello specificare il percorso del file di report nella prima riga. Il formato è il <アセンブリ名>.<レポートファイルのパス> seguente e tutti i separatori di percorso sono punti.

L'ultimo è Stream, quindi convertilo in PDF in base al contenuto dell'elaborazione.

Ad esempio, se si desidera salvarlo come file locale, aggiungere quanto segue.

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

Se vuoi scaricarlo con ASP.NET, aggiungi quanto segue.

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

Prova ad aprire il file PDF di output per vedere se va bene.