Wyprowadzanie raportu ActiveReports jako pliku PDF

Strona zaktualizowana :
Data utworzenia strony :

Środowisko pracy

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

Warunki wstępne

Windows
  • Windows 8.1
  • Okna 10
  • Okna 11
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows Server 2019
  • Windows Server 2022
Visual Studio
  • informacji o wersji Visual Studio 2017
  • informacji o wersji Visual Studio 2019
  • informacji o wersji Visual Studio 2022
Środowisko .NET Framework
  • NET Framework 4.6.2
  • NET Framework 4.7
  • NET Framework 4.8
.SIEĆ
  • .NET Core 3.1
  • .NET 5
  • .NET 6
ActiveReports dla platformy .NET
  • ActiveReports dla platformy .NET 16.0J

Jak wyprowadzić dane do pliku PDF

Jeśli użytkownik chce, aby raport był plikiem PDF, najszybszym sposobem jego udostępnienia jest wyświetlenie raportu w przeglądarce. Oprócz wyświetlania raportów, przeglądarka ma funkcję drukowania i wyprowadzania plików, takich jak PDF, więc jeśli wyświetlisz przeglądarkę, możesz poprosić użytkownika o wydrukowanie pliku PDF.

Jednak w niektórych przypadkach możesz nie chcieć przeszkadzać użytkownikowi lub możesz chcieć systematycznie kierować plikiem PDF. W tej sekcji opisano, jak programowo wyprowadzić plik PDF bezpośrednio z raportu.

Metody i ograniczenia wydruku pliku PDF

Istnieje kilka sposobów programowego wyprowadzania plików PDF, ale nie wszystkie z nich są dopuszczalne. Różni się to w zależności od wersji ActiveReports, platformy, struktury i typu raportu, który wykonuje. Na przykład w Raportach aktywnych 16 raporty sekcji i stron są generowane w różny sposób programowo. Przykład tego można również znaleźć na oficjalnej stronie.

Z tego powodu poniżej przedstawiono kilka przykładów programowych danych wyjściowych PDF, których można użyć jako odniesienia, aby znaleźć ten, który pasuje do projektu.

Informacje o przykładowym raporcie

Plik raportu zawarty w szablonie nowego projektu jest pusty, więc skorzystamy z oficjalnego przykładowego raportu. Oto kilka sugestii, więc pobierz je z jednej z poniższych witryn.

W takim przypadku użyjemy poniższego przykładowego raportu.

  • Raport strony : Estimate_page_ipa.rdlx
  • Raport sekcji: Invoice.rpx (zawarty w przykładowym projekcie WebSample16)

Renderowanie i generowanie plików PDF (Page Reports/RDL Reports)

Istnieje "filtr eksportu" do drukowania plików PDF, ale w wersji 16 można go używać tylko do raportów sekcji.

W związku z tym raporty stron/raporty RDL muszą być generowane za pomocą "Rozszerzenia rysunku", jak opisano na powyższej stronie.

Przede wszystkim stworzę projekt, ale tym razem zrobię go za pomocą prostej aplikacji konsolowej. Jest tak samo łatwy do zastosowania w wersji komputerowej i internetowej, jak i w wersji internetowej.

Podczas tworzenia projektu wybierz pozycję Aplikacja konsolowa.

Po utworzeniu projektu dodaj wymagane pakiety.

Oto, co dodasz: Nie pobieraj najnowszej wersji, ale użyj wersji opisanej poniżej. Wygląda na to, że niektóre kombinacje pakietów nie działają poprawnie z najnowszą wersją. Wyświetlany jest znak ostrzegawczy, ale zignoruj go, ponieważ zależności nie są zgodne. Istnieje jednak możliwość, że w przyszłości zmieni się to wraz z aktualizacjami wersji, dlatego należy go za każdym razem dostosowywać. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf i są wymagane do renderowania do formatu PDF.

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

Dodaj plik raportu do projektu. Lokalizacja może być w dowolnym miejscu, ale tym razem tworzę folder i umieszczam Reports go tam. To położenie umieszczania ma wpływ na ścieżkę, która zostanie określona później.

Następnie otwórz właściwości dodanego raportu.

Ustaw akcję kompilacji na wartość Zasób osadzony. Oznacza to osadzenie zasobu wewnątrz pliku EXE (DLL). Raport jest jednoznacznie ładowany na pulpicie, tak jak w Internecie.

Następnie napisz kod, aby załadować raport i wydrukować go w formacie PDF. Ponieważ jest to aplikacja konsolowa, powinna być opisana w programie.cs tak jak jest, ale jeśli jest to pulpit, powinna być opisana w zdarzeniu przycisku itp., a jeśli jest ASP.NET, powinna być opisana w miejscu, w którym jest przetwarzana w momencie jej zaksięgowania.

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

Nie będę szczegółowo wyjaśniał, co to za przetwarzanie, ponieważ jest to napisane w komentarzach do kodu. Kluczem jest określenie położenia pliku raportu w pierwszym wierszu. Format jest następujący <アセンブリ名>.<レポートファイルのパス> , a wszystkie separatory ścieżek są kropkami.

Ostatni z nich to Stream, więc przekonwertuj go do formatu PDF zgodnie z przetwarzaną zawartością.

Na przykład, jeśli chcesz zapisać go jako plik lokalny, dodaj następujące elementy.

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

Jeśli chcesz pobrać go za pomocą ASP.NET, dodaj następujące elementy.

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

Spróbuj otworzyć wyjściowy plik PDF, aby sprawdzić, czy wszystko jest w porządku.

Wyjściowy plik PDF za pomocą filtrów eksportu (raporty sekcji)

Użyj filtru eksportu PDF dostępnego dla raportów sekcji.

Jest on tworzony w projekcie konsoli w taki sam sposób, jak w przypadku raportów stron. Kod i ustawienia, które utworzysz w tym miejscu, można zastosować do innych projektów.

Po utworzeniu projektu dodaj wymagane pakiety. Tym razem wyjdziemy z filtrem eksportu, więc dodamy tylko jeden.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)

Dodaj plik raportu do projektu. Lokalizacja może być w dowolnym miejscu, ale tym razem tworzę folder i umieszczam Reports go tam. To położenie umieszczania ma wpływ na ścieżkę, która zostanie określona później.

Następnie otwórz właściwości dodanego raportu.

Ustaw akcję kompilacji na wartość Zasób osadzony. Oznacza to osadzenie zasobu wewnątrz pliku EXE (DLL). Raport jest jednoznacznie ładowany na pulpicie, tak jak w Internecie.

Następnie napisz kod, aby załadować raport i wydrukować go w formacie PDF. Ponieważ jest to aplikacja konsolowa, powinna być opisana w programie.cs tak jak jest, ale jeśli jest to pulpit, powinna być opisana w zdarzeniu przycisku itp., a jeśli jest ASP.NET, powinna być opisana w miejscu, w którym jest przetwarzana w momencie jej zaksięgowania.

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

Nie będę szczegółowo wyjaśniał, co to za przetwarzanie, ponieważ jest to napisane w komentarzach do kodu. Kluczem jest określenie położenia pliku raportu w pierwszym wierszu. Format jest następujący <アセンブリ名>.<レポートファイルのパス> , a wszystkie separatory ścieżek są kropkami.

Ostatni z nich to Stream, więc przekonwertuj go do formatu PDF zgodnie z przetwarzaną zawartością.

Na przykład, jeśli chcesz zapisać go jako plik lokalny, dodaj następujące elementy.

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

Jeśli chcesz pobrać go za pomocą ASP.NET, dodaj następujące elementy.

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

Spróbuj otworzyć wyjściowy plik PDF, aby sprawdzić, czy wszystko jest w porządku.