ENGLISH

FastReport .NET – Raspberry Pi 上に PDF レポートを作成

FastReport .NET は、ロイヤリティフリーのランタイムデザイナーを搭載した、多機能なレポート / 帳票作成ツールです。.NET 6 または 7、.NET Core、.NET Framework 4.x 以上、ASP.NET、MVC、Windows Forms に対応しており、Visual Studio 2010 ~ 2022 の開発環境で使用可能です。

当ブログでは、.NET 7 環境で FastReport .NET を使用し、Raspberry Pi 4B 上に PDF レポートを作成する手順を説明します。今回のデモでは、NuGet サーバー(nuget.org)で提供されている評価版の FastReport.Web パッケージを使用していますが、.NET Framework での評価をご希望の場合は、こちらから評価版をお申込みください

なお、Raspberry Pi とは、ARM プロセッサを搭載した小型のシングルボードコンピューターのことです。このマイクロコンピューターは、教育用プラットフォームや組み込みソリューションの開発を行う際に、よく利用されています。

Raspberry Pi 4B

Raspberry Pi 4 Model B

今回の実例では、8GB の RAM を搭載した Raspberry Pi 4 Model B に、デスクトップ OS として Raspberry Pi OS の Bullseye リリースをインストールしました。OS は 32 ビット版と 64 ビット版のどちらでも使用可能です。なお、ここでは、システムのインストール手順と機器構成に関する説明を省略します。

まず、SSH 経由か、もしくはデスクトップ上のターミナルアプリ(Windows Terminal)経由で、Raspberry Pi に接続します。ターミナルアプリを利用するには、ボードがモニターとキーボードに接続している必要があります。

Raspberry Pi をインターネットに接続し、マイクロソフト社のサイトから .NET 7 SDK のダウンロードを行い、アーカイブを解凍します。(お使いの Raspberry Pi OS が 64 ビット版、32 ビット版によって、コマンドが異なります。)

1)64 ビット版の場合

sudo wget https://download.visualstudio.microsoft.com/download/pr/2fefd13b-24e6-4c0c-b3ad-a7285c6b9480/00d9e656a4263e002dab53d9ef901b75/dotnet-sdk-7.0.200-linux-arm64.tar.gz
mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-7.0.200-linux-arm64.tar.gz -C $HOME/dotnet

2)32 ビット版の場合

sudo wget https://download.visualstudio.microsoft.com/download/pr/54b057ec-36ef-4808-a436-50ee3fa39a44/87d696a761176b721daaf8ab9761c9c8/dotnet-sdk-7.0.102-linux-arm.tar.gz
mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-7.0.102-linux-arm.tar.gz -C $HOME/dotnet

環境変数には .NET 7 フォルダへのパスを追加し、さらに DOTNET_ROOT 変数を作成します。

export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet

上記の【export】コマンドは 2 行とも、~/.bash_profile、~/.bashrc、~/.kshrc、~/.profile、~/.zshrc、~/.zprofile 等のユーザープロファイルに追加することを推奨します。

【dotnet –info】コマンドを実行すると、.NET 7 SDK が正しくインストールされていることを確認することができます。(お使いの Raspberry Pi OS が 64 ビット版、32 ビット版によって、表示内容が異なります。)

1)64 ビット版の場合

dotnet --info
.NET SDK:
 Version:   7.0.200
 Commit:    534117727b

Runtime Environment:
 OS Name:     debian
 OS Version:  11
 OS Platform: Linux
 RID:         debian.11-arm64
 Base Path:   /home/pi/dotnet/sdk/7.0.200/

Host:
  Version:      7.0.3
  Architecture: arm64
  Commit:       0a2bda10e8

.NET SDKs installed:
  7.0.200 [/home/pi/dotnet/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 7.0.3 [/home/pi/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 7.0.3 [/home/pi/dotnet/shared/Microsoft.NETCore.App]

Other architectures found:
  None

Environment variables:
  DOTNET_ROOT       [/home/pi/dotnet]

global.json file:
  Not found

Learn more:
  https://aka.ms/dotnet/info

Download .NET:
  https://aka.ms/dotnet/download

2)32 ビット版の場合

dotnet --info
.NET SDK:
 Version:   7.0.102
 Commit:    4bbdd14480

ランタイム環境:
 OS Name:     raspbian
 OS Version:  11
 OS Platform: Linux
 RID:         linux-arm
 Base Path:   /home/pi/dotnet/sdk/7.0.102/

Host:
  Version:      7.0.2
  Architecture: arm
  Commit:       d037e070eb

.NET SDKs installed:
  7.0.102 [/home/pi/dotnet/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 7.0.2 [/home/pi/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 7.0.2 [/home/pi/dotnet/shared/Microsoft.NETCore.App]

Other architectures found:
  None

Environment variables:
  DOTNET_ROOT       [/home/pi/dotnet]

global.json file:
  Not found

Learn more:
  https://aka.ms/dotnet/info

Download .NET:
  https://aka.ms/dotnet/download

さらに、以下の 3 つのパッケージを追加インストールする必要があります。日本語文字をサポートするため、IPA フォントをインストールします。

1) libgdiplus
2) fonts-ipafont
3) fonts-ipaexfont

【sudo】コマンドを実行すると、パッケージをインストールすることができます。(設定する引数は、以下の内容をご参照ください。)

sudo apt-get install libgdiplus
sudo apt install fonts-ipafont fonts-ipaexfont

【dotnet new console -o testpdf】コマンドを実行すると、.NET 7 アプリケーションを作成することができます。(testpdf フォルダに、testpdf.csproj と Program.cs を含む、コンソールアプリケーションのテンプレートファイルが表示されます。)

dotnet new console -o testpdf

以下の通り、testpdf.csproj に <ItemGroup>(評価版の FastReport.Web パッケージの情報)を追加します。ビルド後、FastReport.Web パッケージは、~/.nuget/packages に配置されます。

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="FastReport.Web" Version="2023.1.9-demo" />
</ItemGroup>


</Project>

Program.cs を以下の内容に変更します。このコードは、レポートインスタンスを作成して、ページ上にバンドを追加します。

using System;
using FastReport;
using FastReport.Export.Pdf;
using FastReport.Utils;
 
namespace testpdf
{
class Program
 {
 static void Main()
 {
 Console.WriteLine("Test FastReport Core"); 
 // create report object
 using Report report = new Report();
 // create page
 using ReportPage page = new ReportPage();
 // add page in report
 report.Pages.Add(page);
 // create band
 page.ReportTitle = new ReportTitleBand()
 {
 Height = Units.Centimeters * 10
 };
 // create text object placed on band
 using TextObject text = new TextObject()
 {
 Left = Units.Centimeters * 7,
 Top = Units.Centimeters * 5,
 Font = new System.Drawing.Font("IPA P明朝", 24),
 CanGrow = true,
 AutoWidth = true,
 Text = "こんにちは、Raspberry Pi!",
 Parent = page.ReportTitle
 };
 
 // make the document
 report.Prepare();
 // save the document as PDF file
 using PDFExport pdf = new PDFExport();
 report.Export(pdf, "file.pdf");
 }
 }
}

設定した座標 Left(幅) と Top(高さ) に、テキストオブジェクトが作成されます。CanGrow(拡張可能)プロパティと AutoWidth(幅を自動調整)プロパティを使用すると、テキストのサイズに応じて、高さと幅を自動的に計算することができます。

なお、プログラムコードでオブジェクトを作成することだけが、ドキュメントを生成する方法ではありません。FastReport .NET にバンドルされているテンプレートエディタ【Designer.exe】を使用することも一つの方法です。

エディタによって作成された *.frx 拡張子を持つファイルは、Report.Load メソッドを使用して読み込むことができます。この .frx の xml テンプレートでは、ユーザーデータや変数へのバインディングを指定したり、組み込み関数やユーザー定義関数を使用したりできます。(FastReport .NET の機能の詳細については、製品情報ページをご参照ください。

ドキュメントは、PDF ファイルとして保存されます。コードで使用されるすべてのオブジェクトには、ドキュメントの動作に影響する多くのプロパティが用意されています。(プロパティの詳細については、FastReport .NET のマニュアルをご参照ください。)

では、testpdf のフォルダーに移動し【dotnet run】コマンドを実行して、プログラムを起動してみましょう。

dotnet run

必要なパッケージがすべてインストールされますと、file.pdf が生成されます。(生成されなかった場合は、エラー内容を読み、エラーを解消する必要があります。)生成された PDF ファイルは標準に完全準拠しており、テキストと埋め込みフォントが含まれています。表示されたテキストを選択して、別のドキュメントにコピーすることができます。

評価版をお使いの場合、ページの左上隅に、評価版を使用したことを示すテキスト【DEMO VERSION】が表示されます。評価版のページ数は、5 ページまでに制限されています。製品版には、このような制限はありません。

このように、ARM32 / ARM64 プラットフォーム上で .NET 7 アプリケーションを実行できることは、非常に満足できる結果と言えるでしょう。サーバーメーカーは、ARM プロセッサを搭載したハードウェアプラットフォームの販売をすでに開始しています。近い将来、ホスティングプロバイダーから ARM ベアメタルが提供されて、人気が高まるかもしれません。今後に注目です。

GIGABYTE 社の ARM サーバー

評価版申込みはこちらから

30日間、無料でお使いいただけます。

一覧に戻る

Contactお問い合わせ

お気軽にお問い合わせください。

お問い合わせ

    必須会社名

    個人のお客様は「個人」と入力してください。

    必須お名前
    必須メールアドレス
    必須メールアドレス(確認)
    必須ライセンス ありなし
    ダウンロード目的