Generar un informe de ActiveReports como un archivo PDF
Entorno operativo
- Windows
-
- Windows 10 Pro 22H2
- Visual Studio
-
- Visual Studio 2022 Community Edition
- ActiveReports para .NET
-
- ActiveReports para .NET 16.0J
Prerrequisitos
- Windows
-
- Windows 8.1
- Windows 10
- Windows 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
- .RED
-
- .NET Core 3.1
- .NET 5
- .NET 6
- ActiveReports para .NET
-
- ActiveReports para .NET 16.0J
Cómo generar en un archivo PDF
Si un usuario desea un informe como archivo PDF, la forma más rápida de proporcionarlo es ver el informe en el visor. Además de mostrar informes, el visor tiene una función para imprimir y generar archivos como PDF, por lo que si muestra el visor, puede pedirle al usuario que genere el archivo PDF.
Sin embargo, en algunos casos, es posible que no desee molestar al usuario o que desee dirigir sistemáticamente el archivo PDF. En esta sección se describe cómo generar mediante programación un archivo PDF directamente desde un informe.
Métodos y limitaciones de salida de archivos PDF
Hay varias formas de generar archivos PDF mediante programación, pero no todas son aceptables. Esto varía según la versión de ActiveReports, la plataforma, el marco y el tipo de informe que realice. Por ejemplo, en ActiveReports 16, los informes de sección y página se generan de forma diferente mediante programación. Un ejemplo de esto también se puede encontrar en la página oficial.
Por esta razón, aquí hay algunos ejemplos de salida programática de PDF que puede usar como referencia para encontrar la que se adapte a su proyecto.
Acerca del informe de ejemplo
El archivo de informe incluido en la plantilla para el nuevo proyecto está vacío, por lo que utilizaremos el informe de muestra oficial. Aquí hay algunas sugerencias, así que descárguelas de uno de los siguientes sitios.
- ActiveReports-Estimate-sample
- GrapeCity ActiveReports (GitHub) ( puede haber un archivo de informe en cada proyecto de ejemplo)
En este caso, usaremos el siguiente informe de ejemplo.
- Informe de página : Estimate_page_ipa.rdlx
- Informe de sección: Invoice.rpx (incluido en el proyecto de ejemplo WebSample16)
Renderizar y generar archivos PDF (informes de página/informes RDL)
Hay un "filtro de exportación" para la salida de archivos PDF, pero en la versión 16 solo se puede usar para informes de sección.
Por lo tanto, los informes de página/informes RDL deben generarse con la "Extensión de dibujo" como se describe en la página anterior.
En primer lugar, crearé un proyecto, pero esta vez lo haré con una sencilla aplicación de consola. Es tan fácil de aplicar a las versiones de escritorio y web como a la versión web.
Al crear un proyecto, seleccione Aplicación de consola.
Después de crear el proyecto, agregue los paquetes necesarios.
Esto es lo que agregará: Por favor, no obtenga la última versión, pero utilice la versión que se describe a continuación.
Parece que algunas combinaciones de paquetes no funcionan correctamente con la última versión.
Se muestra una marca de advertencia, pero se ignora porque las dependencias no coinciden.
Sin embargo, existe la posibilidad de que cambie con las actualizaciones de versión en el futuro, así que ajústelo cada vez.
GrapeCity.Documents.Imaging
GrapeCity.Documents.Pdf
y están obligados a renderizarlos en PDF.
- GrapeCity.ActiveReports.Export.Pdf (16.4.0)
- GrapeCity.Documents.Imaging (6.0.3)
- GrapeCity.Documents.Pdf (6.0.3)
Agregue un archivo de informe al proyecto. La ubicación puede ser cualquier lugar, pero esta vez estoy Reports
creando una carpeta y poniéndola allí.
Esta ubicación de ubicación afecta a la ruta que especifique más adelante.
A continuación, abra las propiedades del informe que ha agregado.
Establezca la acción de compilación en Recurso incrustado. Esto significa incrustar el recurso dentro de un archivo EXE (DLL). El informe se carga de forma única en el escritorio como en la web.
A continuación, escriba el código para cargar el informe e imprímalo en PDF. Dado que es una aplicación de consola, debe describirse en Programa.cs tal cual, pero si es un escritorio, debe describirse en un evento de botón, etc., y si es ASP.NET, debe describirse en el lugar donde se procesa cuando se 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é en detalle qué tipo de procesamiento es porque está escrito en los comentarios del código.
La clave es especificar la ubicación del archivo de informe en la primera línea.
El formato es el siguiente <アセンブリ名>.<レポートファイルのパス>
, y todos los separadores de ruta son puntos.
El último es Stream, así que conviértalo a PDF de acuerdo con el contenido de procesamiento.
Por ejemplo, si desea guardarlo como un archivo local, agregue lo siguiente.
// ファイルにストリームを書き出します
using var fs = new FileStream("Output.pdf", FileMode.Create);
outputStream.CopyTo(fs);
Si desea descargarlo con ASP.NET, agregue lo siguiente.
return File(outputStream, "application/pdf", "Output.pdf");
Intente abrir el archivo PDF de salida para ver si está bien.
Salida de PDF usando filtros de exportación (informes de sección)
Utilice el filtro de exportación de PDF disponible para los informes de sección.
Se crea en un proyecto de consola de la misma manera que para los informes de página. El código y la configuración que cree aquí se pueden aplicar a otros proyectos.
Después de crear el proyecto, agregue los paquetes necesarios. Esta vez, saldremos con un filtro de exportación, por lo que solo agregaremos uno.
- GrapeCity.ActiveReports.Export.Pdf (16.4.0)
Agregue un archivo de informe al proyecto. La ubicación puede ser cualquier lugar, pero esta vez estoy Reports
creando una carpeta y poniéndola allí.
Esta ubicación de ubicación afecta a la ruta que especifique más adelante.
A continuación, abra las propiedades del informe que ha agregado.
Establezca la acción de compilación en Recurso incrustado. Esto significa incrustar el recurso dentro de un archivo EXE (DLL). El informe se carga de forma única en el escritorio como en la web.
A continuación, escriba el código para cargar el informe e imprímalo en PDF. Dado que es una aplicación de consola, debe describirse en Programa.cs tal cual, pero si es un escritorio, debe describirse en un evento de botón, etc., y si es ASP.NET, debe describirse en el lugar donde se procesa cuando se 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é en detalle qué tipo de procesamiento es porque está escrito en los comentarios del código.
La clave es especificar la ubicación del archivo de informe en la primera línea.
El formato es el siguiente <アセンブリ名>.<レポートファイルのパス>
, y todos los separadores de ruta son puntos.
El último es Stream, así que conviértalo a PDF de acuerdo con el contenido de procesamiento.
Por ejemplo, si desea guardarlo como un archivo local, agregue lo siguiente.
// ファイルにストリームを書き出します
using var fs = new FileStream("Output.pdf", FileMode.Create);
outputStream.CopyTo(fs);
Si desea descargarlo con ASP.NET, agregue lo siguiente.
return File(outputStream, "application/pdf", "Output.pdf");
Intente abrir el archivo PDF de salida para ver si está bien.