ActiveReports 보고서를 PDF 파일로 출력

페이지 업데이트 :
페이지 생성 날짜 :

운영 환경

윈도우
  • 윈도우 10 프로 22H2
비주얼 스튜디오
  • Visual Studio 2022 커뮤니티 에디션
NET용 ActiveReports
  • .NET 16.0J용 ActiveReports

필수 구성 요소

윈도우
  • Windows 8.1
  • 윈도우 10
  • 윈도우 11
  • 윈도우 서버 2012
  • 윈도우 서버 2012 R2
  • 윈도우 서버 2016
  • 윈도우 서버 2019
  • 윈도우 서버 2022
비주얼 스튜디오
  • 비주얼 스튜디오 2017
  • 비주얼 스튜디오 2019
  • 비주얼 스튜디오 2022
.NET 프레임워크
  • NET 프레임워크 4.6.2
  • NET 프레임워크 4.7을 참조하십시오.
  • NET 프레임워크 4.8
.그물
  • .NET 코어 3.1.NET Core 3.1
  • .NET 5
  • .NET 6
NET용 ActiveReports
  • .NET 16.0J용 ActiveReports

PDF 파일로 출력하는 방법

사용자가 보고서를 PDF 파일로 제공하려는 경우 가장 빠른 방법은 뷰어에서 보고서를 보는 것입니다. 뷰어에는 보고서를 표시하는 것 외에도 PDF 등의 파일을 인쇄하고 출력하는 기능이 있으므로 뷰어를 표시하면 사용자에게 PDF 파일을 출력하도록 요청할 수 있습니다.

그러나 경우에 따라 사용자를 귀찮게 하고 싶지 않거나 PDF 파일을 체계적으로 지시하고 싶을 수 있습니다. 이 섹션에서는 프로그래밍 방식으로 보고서에서 직접 PDF 파일을 출력하는 방법에 대해 설명합니다.

PDF 파일 출력 방법 및 제한 사항

프로그래밍 방식으로 PDF 파일을 출력하는 방법에는 여러 가지가 있지만 모든 방법이 허용되는 것은 아닙니다. 이는 ActiveReports의 버전, 플랫폼, 프레임워크 및 수행하는 보고서 유형에 따라 다릅니다. 예를 들어 ActiveReports 16에서는 섹션 및 페이지 보고서가 프로그래밍 방식으로 다르게 출력됩니다. 이에 대한 예는 공식 페이지에서도 찾을 수 있습니다.

이러한 이유로 다음은 프로젝트에 적합한 것을 찾기 위한 참조로 사용할 수 있는 프로그래밍 방식 PDF 출력의 몇 가지 예입니다.

샘플 보고서 정보

새 프로젝트의 템플릿에 포함된 보고서 파일이 비어 있으므로 공식 샘플 보고서를 사용합니다. 다음은 몇 가지 제안 사항이므로 다음 사이트 중 하나에서 다운로드하십시오.

이 경우 다음 샘플 보고서를 사용합니다.

  • 페이지 리포트 : Estimate_page_ipa.rdlx
  • 섹션 보고서: Invoice.rpx(WebSample16 샘플 프로젝트에 포함됨)

PDF 렌더링 및 생성(페이지 보고서/RDL 보고서)

PDF를 출력하기 위한 "내보내기 필터"가 있지만 버전 16에서는 섹션 보고서에만 사용할 수 있습니다.

따라서 페이지 보고서/RDL 보고서는 위 페이지에 설명된 대로 "도면 확장"을 사용하여 생성해야 합니다.

우선은 프로젝트를 작성하지만, 이번에는 간단한 콘솔 어플리케이션으로 작성해 갑니다. 데스크톱 및 웹 버전에도 웹 버전과 마찬가지로 쉽게 적용할 수 있습니다.

프로젝트를 생성할 때 Console App을 선택합니다.

프로젝트를 만든 후 필요한 패키지를 추가합니다.

추가할 내용은 다음과 같습니다. 최신 버전을 다운로드하지 말고 아래에 설명된 버전을 사용하십시오. 일부 패키지 조합이 최신 버전에서 제대로 작동하지 않는 것 같습니다. 경고 표시가 표시되지만 종속성이 일치하지 않으므로 무시합니다. 다만, 향후 버전 업스쳐에 따라 변경될 가능성이 있으니 그때마다 조정해 주세요. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf PDF로 렌더링해야 합니다.

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

프로젝트에 보고서 파일을 추가합니다. 위치는 어디에나 있을 수 있지만 이번에는 Reports 폴더를 만들어 거기에 넣습니다. 이 배치 위치는 나중에 지정하는 경로에 영향을 줍니다.

그런 다음 추가한 보고서의 속성을 엽니다.

빌드 작업을 Embedded Resource로 설정합니다. 이는 EXE(DLL) 내에 리소스를 포함하는 것을 의미합니다. 보고서는 웹에서와 마찬가지로 데스크톱에서도 고유하게 로드됩니다.

그런 다음 코드를 작성하여 보고서를 로드하고 PDF로 인쇄합니다. 콘솔 응용 프로그램이기 때문에 Program.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 폴더를 만들어 거기에 넣습니다. 이 배치 위치는 나중에 지정하는 경로에 영향을 줍니다.

그런 다음 추가한 보고서의 속성을 엽니다.

빌드 작업을 Embedded Resource로 설정합니다. 이는 EXE(DLL) 내에 리소스를 포함하는 것을 의미합니다. 보고서는 웹에서와 마찬가지로 데스크톱에서도 고유하게 로드됩니다.

그런 다음 코드를 작성하여 보고서를 로드하고 PDF로 인쇄합니다. 콘솔 응용 프로그램이기 때문에 Program.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 파일을 열어 문제가 없는지 확인하십시오.