Sortida d'un informe ActiveReports com a fitxer PDF

Pàgina actualitzada :
Data de creació de la pàgina :

Entorn operatiu

Windows
  • Windows 10 Pro 22H2
Estudi visual
  • Edició comunitària de Visual Studio 2022
ActiveReports per a .NET
  • Informes Actives per a .NET 16.0J

Prerequisits

Windows
  • Windows 8.1
  • Windows 10
  • Finestres 11
  • Windows Servidor 2012
  • Windows Servidor 2012 R2
  • Windows Servidor 2016
  • Windows Servidor 2019
  • Windows Servidor 2022
Estudi visual
  • Estudi Visual 2017
  • Estudi visual 2019
  • Estudi visual 2022
Marc .NET
  • NET Framework 4.6.2
  • NET Framework 04/07
  • NET Framework 04/08
.XARXA
  • .NET Core 01/03
  • .NET 5
  • .NET 6
ActiveReports per a .NET
  • Informes Actives per a .NET 16.0J

Com sortir a un fitxer PDF

Si un usuari vol un informe com a fitxer PDF, la manera més ràpida de proporcionar-lo és que l'informe es visualitzi al visor. A més de mostrar informes, el visor té una funció per imprimir i emetre arxius com PDF, de manera que si es visualitza el visor, es pot demanar a l'usuari que emeti el fitxer PDF.

Tanmateix, en alguns casos, és possible que no vulgueu molestar l'usuari o que vulgueu dirigir sistemàticament el fitxer PDF. Aquesta secció descriu com emetre programàticament un fitxer PDF directament des d'un informe.

Mètodes i limitacions de sortida d'arxius PDF

Hi ha diverses maneres d'emetre fitxers PDF mitjançant programació, però no totes són acceptables. Això varia en funció de la versió d'ActiveReports, la plataforma, el marc i el tipus d'informe que realitza. Per exemple, a ActiveReports 16, els informes de secció i de pàgina es produeixen de manera diferent mitjançant programació. Un exemple d'això també es pot trobar a la pàgina oficial.

Per aquest motiu, aquí teniu alguns exemples de sortida programàtica en PDF que podeu utilitzar com a referència per trobar la que s'adapti al vostre projecte.

Sobre l'informe de mostra

El fitxer d'informe inclòs a la plantilla del nou projecte està buit, per la qual cosa utilitzarem l'informe de mostra oficial. Aquí teniu alguns suggeriments, així que descarregueu-los des d'un dels llocs següents.

En aquest cas, utilitzarem el següent informe de mostra.

  • Informe de pàgina : Estimate_page_ipa.rdlx
  • Informe de secció: Invoice.rpx (inclòs en el projecte de mostra WebSample16)

Renderitzar i generar PDF (Page Reports/RDL Reports)

Hi ha un "filtre d'exportació" per als PDF de sortida, però a la versió 16 només es pot utilitzar per als informes de secció.

Per tant, els informes de pàgina/RDL s'han de generar amb l'"Extensió de dibuix" tal com es descriu a la pàgina anterior.

En primer lloc, crearé un projecte, però aquesta vegada ho faré amb una senzilla aplicació de consola. És tan fàcil d'aplicar a les versions d'escriptori i web com a la versió web.

Quan creïs un projecte, selecciona Aplicació de consola.

Després de crear el projecte, afegiu els paquets necessaris.

Això és el que afegireu: No obtingueu la versió més recent, sinó que utilitzeu la versió que es descriu a continuació. Sembla que algunes combinacions de paquets no funcionen correctament amb l'última versió. Es mostra un signe d'advertència, però ignoreu-lo perquè les dependències no coincideixen. No obstant això, hi ha la possibilitat que canviï amb les actualitzacions de la versió en el futur, així que si us plau, ajusteu-lo cada vegada. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf i estan obligats a renderitzar a PDF.

  • GrapeCity.ActiveReports.Export.pdf (16.4.0)
  • GrapeCity.Documents.Imatge (6.0.3)
  • GrapeCity.Documents.pdf (6.0.3)

Afegiu un fitxer d'informe al projecte. La ubicació pot ser a qualsevol lloc, però aquesta vegada estic Reports creant una carpeta i posant-la allà. Aquesta ubicació afecta el camí que especifiqueu més endavant.

A continuació, obriu les propietats de l'informe que heu afegit.

Definiu l'acció de compilació a Recurs incrustat. Això significa incrustar el recurs dins d'un EXE (DLL). L'informe es carrega de manera única a l'escriptori tal com es troba al web.

A continuació, escriviu el codi per carregar l'informe i imprimiu-lo en PDF. Com que és una aplicació de consola, s'ha de descriure a Programa.cs tal com és, però si és un escriptori, s'ha de descriure en un esdeveniment de botons, etc., i si és ASP.NET, s'ha de descriure al lloc on es processa quan es publica.

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

No explicaré detalladament quin tipus de processament és perquè està escrit en els comentaris del codi. La clau és especificar la ubicació del fitxer d'informe a la primera línia. El format és el <アセンブリ名>.<レポートファイルのパス> següent, i tots els separadors de camins són períodes.

L'últim és Stream, així que convertiu-lo a PDF segons el contingut de processament.

Per exemple, si voleu desar-lo com a fitxer local, afegiu el següent.

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

Si voleu descarregar-lo amb ASP.NET, afegiu el següent.

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

Proveu d'obrir el fitxer PDF de sortida per veure si està bé.

Sortida PDF mitjançant filtres d'exportació (informes de secció)

Utilitzeu el filtre d'exportació de PDF disponible per als informes de secció.

Es crea en un projecte de consola de la mateixa manera que per als informes de pàgina. El codi i la configuració que creeu aquí es poden aplicar a altres projectes.

Després de crear el projecte, afegiu els paquets necessaris. Aquesta vegada, sortirem amb un filtre d'exportació, de manera que només n'afegirem un.

  • GrapeCity.ActiveReports.Export.pdf (16.4.0)

Afegiu un fitxer d'informe al projecte. La ubicació pot ser a qualsevol lloc, però aquesta vegada estic Reports creant una carpeta i posant-la allà. Aquesta ubicació afecta el camí que especifiqueu més endavant.

A continuació, obriu les propietats de l'informe que heu afegit.

Definiu l'acció de compilació a Recurs incrustat. Això significa incrustar el recurs dins d'un EXE (DLL). L'informe es carrega de manera única a l'escriptori tal com es troba al web.

A continuació, escriviu el codi per carregar l'informe i imprimiu-lo en PDF. Com que és una aplicació de consola, s'ha de descriure a Programa.cs tal com és, però si és un escriptori, s'ha de descriure en un esdeveniment de botons, etc., i si és ASP.NET, s'ha de descriure al lloc on es processa quan es publica.

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

No explicaré detalladament quin tipus de processament és perquè està escrit en els comentaris del codi. La clau és especificar la ubicació del fitxer d'informe a la primera línia. El format és el <アセンブリ名>.<レポートファイルのパス> següent, i tots els separadors de camins són períodes.

L'últim és Stream, així que convertiu-lo a PDF segons el contingut de processament.

Per exemple, si voleu desar-lo com a fitxer local, afegiu el següent.

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

Si voleu descarregar-lo amb ASP.NET, afegiu el següent.

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

Proveu d'obrir el fitxer PDF de sortida per veure si està bé.