請求書、納品書、明細書
基幹業務アプリケーションは、毎日データベースから文書を印刷します。マスター詳細のデータセットソースが各請求書を明細行にリンクし、グループとフッターが合計を出力し、QR コードや GS1-128 バーコードがラベルに付き、PDF エクスポートはメールにそのまま添付できるアクセシブルなファイルを書き出します。同じレポートは、経理チーム向けに XLSX としても保存できます。
- マスター詳細
- グループと小計
- バーコード
- アクセシブルな PDF
レポートを一度設計すれば、アクセシブルな PDF、Excel ファイル、CSV、PNG ページとして配信できます。フルーエントなチェーンでコードから作成することも、実行時に JSON 定義を読み込むこともでき、グループ、小計、マスター詳細、バーコードに対応します。エンジンはウィンドウも外部 DLL も必要としないので、サービスや Linux64 のデーモンで動作します。
11 の機能を、実際の API とその背後のヘルプトピックとともに紹介します。
本物のバンド、グループ、式を使って、レポートをコードまたは JSON で記述します。
レポートを設計する
レポートデザイナーは便利ですが、レイアウトをバージョン管理に置き、プルリクエストでレビューし、自社のメタデータから生成する必要が出ると、話は別です。TsgcReportBuilder は、スタイル、ページ、バンド、項目を 1 本のフルーエントなチェーンで記述するので、レポートは、プロジェクトの他の部分と同じようにコンパイルでき、差分を取れ、リファクタリングできる通常のコードになります。同じチェーンがレポートを準備し、すべての出力形式に保存します。この方法で作ったレポートは、ループで生成でき、関数として共有でき、他のコードと同様に単体テストで検証できます。
Style、Page、GroupHeader、MasterData、GroupFooter、PageFooter は、レイアウトそのままに読めますSaveToPDF、SaveToXLSX、SaveToCSV、SaveToPNG を呼び出せますSaveToPDFStream などのストリーム版もありますTsgcReport モデルを設定するので、コードでさらに調整できますRightToLeft とバンドおよび項目の BiDiMode がレイアウトをミラー化し、PDF、XLSX、HTML の出力ではアラビア語とヘブライ語のテキストがシェイピングされます
レポートを設計する
業務レポートは、単純な一覧であることはまれです。地域別の売上、顧客別の請求書、倉庫別の在庫などです。sgcReports には、レポートタイトル、ページヘッダー、グループヘッダー、データ、グループフッター、ページフッター、サマリーの各バンドを持つ、本物のバンド型レイアウトがあります。グループは式の値が変わると区切られ、独自の合計を出力し、新しいページを開始したり、全ページでヘッダーを繰り返したりできるので、長いレポートも読みやすく保てます。サブレポートを使えば、あるページに別のページのレイアウトを含められるため、サマリーや付録に便利です。
GroupExpression。グループを入れ子にして 2 階層以上にできますStartNewPage、RepeatOnEveryPage、KeepTogether でページの流れを制御しますrbtReportTitle から rbtReportSummary までのバンドの種類に加え、列ヘッダーとフッターがありますTotalPages を使いますPrintOnFirstPage と PrintOnLastPage でページバンドの表示位置を決め、SubreportPageName で別のページを埋め込みます
レポートを設計する
請求書は、明細行を持つマスターレコードで、すべての行に正しい製品、数量、価格が必要です。データセットソースは、FireDAC を含む任意の TDataSet をバインドし、キーフィールドで詳細ソースをマスターにリンクするので、各請求書は自分の明細行と合計を出力します。データがデータベースにない場合は、JSON 配列や独自のイベント駆動型ソースが同じように使えます。詳細バンドは現在のマスターレコードの各行ごとに繰り返され、フッターは明細行にわたる集計式で請求書の合計を出力します。
TsgcReportDataSetSource と、MasterSource、MasterFields、DetailFieldsTsgcReportJSONSource は JSON 文字列またはファイルを読み込み、RecordsPath で配列を指定しますTsgcReportEventSource は、OnFirst、OnNext、OnGetValue を通じて、コードから行を取得しますAddDataSource でエンジンに登録します
レポートを設計する
月次明細書に新しい列を追加するために、アプリケーションの新しいリリースが必要になるべきではありません。レポート定義は JSON として保存および読み込みができるので、レイアウトをデータベース、設定フォルダ、顧客別のディレクトリに置けます。アプリケーションは実行時に定義を読み込み、データをバインドして描画し、同じファイルが Web デザイナーにも使われます。定義はプレーンテキストなので、バージョン管理で差分が見やすく、自社のツールで生成したり、スクリプトで移行したりできます。
sgcReportLoadFromJSON と sgcReportSaveToJSON。ファイルとストリームの版もありますsgcReportGenerateSchema は、エディタと検証のための JSON スキーマを書き出します
レポートを設計する
合計、書式付きの日付、条件付きのテキスト、配送ラベルは、いずれも式とバーコードで実現できます。あらゆるテキスト項目は、角括弧で囲んだ式を含められ、たとえばフィールドの書式付き合計などを表せます。文字列、数値、日付の関数が組み込まれています。バーコードも項目で、sgcPDF エンジンがベクターとして描画するため、ラベルや納品書は、どのサイズでも鮮明に印刷されます。式は、エンジンが行ごとに評価するので、フッターの合計は、上に印刷された明細行と常に一致します。
Sum、FormatFloat、FormatDateTime、Upper、Round、IsNullOnGetVariable で、実行時に独自の変数を提供しますBarcode で、rbsCode128、rbsEAN13、rbsQRCode、rbsDataMatrix、rbsPDF417 などを使えます一度準備すれば、ユーザーや規制当局が求める形式にエクスポートできます。
どこにでも届ける
公的機関や多くの企業は、スクリーンリーダーで読める文書を公開する必要があり、アーカイブには 20 年後でも開けるファイルが必要です。PDF エクスポートは、既定でタグ付きの PDF/UA-1 を書き出し、論理的な読み上げ順、画像の代替テキスト、見出しのマークを含めます。文書を長期保存のアーカイブに送る場合は、PDF/A-3 を有効にします。Delphi と .NET では、エクスポートで PDF/A-4 と PDF/UA-2 も書き出せます。フォントは、プレビューと同じフォントマネージャーを通じて埋め込まれ、ヘルプには、無料の veraPDF ツールでファイルを検証する手順を載せています。
TsgcReportPDFExport の PDFUA は、既定で True ですAltText と TagRole で、画像と見出しを説明しますPDFA を rpaA3b または rpaA3a に設定しますFixedDocumentID と FixedCreationDate で、テスト向けにバイト単位で再現可能な出力にできます
どこにでも届ける
経理部門は明細書を Excel で、顧客は PDF で、システム連携は CSV で、Web ページはサムネイルを求めます。エンジンはページを一度だけ準備し、すべてのエクスポートが同じ準備結果から作られるので、どのファイルでも数値は同一です。XLSX 出力は数値を数値のまま保持するため、スプレッドシートで後処理なしに合計できます。すべてのエクスポートはストリームにも書き込めるので、Web レスポンスやメール添付にも対応し、SaveToFiles は 1 回の呼び出しで複数の形式を書き出します。
TsgcReportPDFExport、TsgcReportXLSXExport、TsgcReportCSVExport、TsgcReportImageExportTsgcReportPreparedPages と LoadPrepared で、1 回の実行から複数のエクスポートに供給しますDetectNumbers、SheetName、ExcludePageBands で、スプレッドシートの形を整えますSaveToPNG に渡した DPI での PNG ページ
どこにでも届ける
ユーザーは、印刷や保存の前に、レポートのページをめくって確認したいと考えます。プレビューコントロールは、PDF と同じ描画で準備済みのページを表示し、ページ移動、ズーム、フィットモードを備え、独自に作る場合は非表示にできるツールバーも付いています。VCL プレビューは Windows で動作し、FireMonkey プレビューは Windows で動作します。プレビューは sgcPDF のビューアコントロールを通じて描画するので、ユーザーが画面で見るものは PDF エクスポートが書き出すものと同じで、プレビューの SaveToPDF は、ユーザーが見ているページを保存します。
TsgcReportPreviewVCL の FirstPage、NextPage、PriorPage、LastPageZoomIn、ZoomOut、FitWidth、FitPageShowToolbar、CurrentPage、OnPageChangeTsgcReportPreviewFMX:Windows 上の FireMonkey プレビューどこにでも届ける
今日のレポートの多くは、サーバー上で生成されます。夜間の明細書、決済後の請求書、API の背後でのエクスポートなどです。sgcReports のコアは VCL にも FireMonkey にも依存せず、外部 DLL もプリンタードライバーも不要なので、同じコードが Windows サービスでも Linux64 のデーモンでも動作します。ヘルプには、各スレッドが独自のエンジンを持つワーカープールのパターンを紹介しています。ジョブ、データ、レポート定義は JSON ファイルとして届けられるため、ファイルを書き出せるシステムなら何でもデーモンに入力できます。
TsgcReportEngine は、ウィンドウなしでレポートを準備しますsgcReportsConfigureForServer は、Windows 上で多数のスレッド向けにメモリマネージャーを調整しますTsgcReportFontManager が、すべてのスレッドに提供されますsgcReportsHTML ブリッジは、レポートを HTTP で配信し、ユーザーがブラウザでレイアウトを編集できるようにします。
Web 上のレポート 登録版のみ
Web ポータル、イントラネット、モバイルアプリが必要とするのは、多くの場合、レポートを返す URL だけです。HTTP エンドポイントは、sgcWebSockets の HTTP サーバーにレポートを名前で登録し、PDF、XLSX、CSV、PNG として配信します。パラメーターを尋ね、結果のページをめくり、ダウンロードを提供する HTML ビューアも付いています。コードは、実行のたびにイベントでデータを設定します。エンドポイントは、デスクトップのコードと同じレポート定義とデータソースを使うので、一度書いたレポートが、アプリケーションとブラウザの両方に使えます。
TsgcReportHTTPEndpoint と、RegisterReport、BasePathOnBeforePrepare は、リクエストごとにパラメーターとデータを設定しますShowParameters を持つ TsgcReportHTMLViewerTsgcWebSocketHTTPServer 上で動作します。ReportHTTPServer デモは、完全なサーバーですDelphi と C++ Builder:sgcWebSockets Professional 以上と sgcHTML が必要です。.NET:esegece.sgcReports.HTML と AspNetCore のパッケージが、同じルートをホストします。
ヘルプのトピックを読むWeb 上のレポート 登録版のみ
パワーユーザーは、いつもあと 1 列、あるいは別のグループ化を求めます。以前は、変更のたびに開発者へのチケットが必要でした。ブラウザのデザイナーは、バンドキャンバス、プロパティインスペクタ、ライブプレビューを使ってレポートの JSON 定義を編集し、完成したレポートと同じエンドポイントから配信されます。編集を許可する相手は自分で決められ、保存された定義は sgcReports の他のあらゆる部分で読み込めます。JSON ダウンロードボタンは、定義を保管したい人に渡せます。
DesignerEnabled を設定したエンドポイント上の TsgcReportHTMLDesignersgcReportLoadFromJSON で読み込めます本番のエンドポイントでは DesignerEnabled をオフにするか、独自の認証の背後に置いてください。
ヘルプのトピックを読むsgcUI スイートのデモに含まれる sgcReports:組み込みのシミュレーションデータでオフラインで動作する完全なアプリケーションです。
KPI ボックスとチャート帯を備えた売上レポート。PDF に出力。
Altamira ERP →
コードで作成した約定確認書。QR コード付き。
Altamira Markets →
チャートとバーコード付きのシフトレポート。
Altamira Plant →
マップを埋め込んだルートシートを PDF で生成。
Altamira Fleet →
基幹業務アプリケーションは、毎日データベースから文書を印刷します。マスター詳細のデータセットソースが各請求書を明細行にリンクし、グループとフッターが合計を出力し、QR コードや GS1-128 バーコードがラベルに付き、PDF エクスポートはメールにそのまま添付できるアクセシブルなファイルを書き出します。同じレポートは、経理チーム向けに XLSX としても保存できます。
顧客ポータルや社内 API では、必要なときにレポートが求められます。HTTP エンドポイントにレポートを登録すれば、ブラウザがパラメーターとダウンロード付きのビューアを受け取ります。または、Linux64 のデーモンでエンジンを実行し、ワーカープールでキューに入ったジョブを描画します。プリンタードライバー、ウィンドウ、外部 DLL は不要です。同じ JSON 定義が、ビューアにもデーモンにも使われます。
公共部門のサプライヤーや規制対象の企業は、スクリーンリーダーで読める文書を公開し、それを何年もアーカイブしなければなりません。タグ付きの PDF/UA-1 出力が既定で、代替テキストと見出しの役割はレポート項目に設定され、PDF/A-3 はプロパティ 1 つで切り替えられます。ヘルプには、無料の veraPDF バリデーターで結果を確認する方法を紹介しています。再現可能な出力は、自動テストでのファイル比較に役立ちます。
Delphi、C++ Builder、C# で同じ API を使えます。地域ごとのヘッダー、売上ごとの行、地域ごとの小計を持つレポートを、PDF、XLSX、CSV として保存します。
JSON ソース上のフルーエントなレポート:地域ごとに 1 つのグループと小計を持ち、PDF、XLSX、CSV として保存します。
uses
Classes, SysUtils,
sgcReports_Types, sgcReports_Model, sgcReports_Data, sgcReports_Fluent;
const
CS_SALES = '[' +
'{"Region":"East","Customer":"Acme Corp","Amount":1450.00},' +
'{"Region":"East","Customer":"Blue Harbor","Amount":600.00},' +
'{"Region":"North","Customer":"Nordic Labs","Amount":2100.75},' +
'{"Region":"North","Customer":"Fjord Ltd","Amount":880.20}]';
CS_TOTAL = '[FormatFloat(''#,0.00'', Sum(Sales.Amount))]';
procedure ExportSalesReport(const aFolder: string);
var
oSales: TsgcReportJSONSource;
oBuilder: TsgcReportBuilder;
begin
oSales := TsgcReportJSONSource.Create(nil);
oBuilder := TsgcReportBuilder.Create;
try
oSales.SourceName := 'Sales';
oSales.JSON := CS_SALES;
oBuilder.Title('Sales by region').Author('eSeGeCe').Units(ruMillimeters)
.Style('Base').Font('Arial', 10).EndStyle
.Style('Group').Font('Arial', 11).Bold.BackColor($EEEEEE).EndStyle
.Page.Paper(rpsA4).Margins(15)
// one header per region, one line per sale, a subtotal per region
.GroupHeader('Sales.Region', 9).Style('Group')
.Text('Region: [Sales.Region]', 0, 1, 180, 7).TagRole(rtrHeading2).EndBand
.MasterData('Sales', 6).Style('Base')
.Text('[Sales.Customer]', 2, 0, 120, 6)
.Text('[Sales.Amount]', 130, 0, 50, 6).AlignRight.Format('#,0.00').EndBand
.GroupFooter(9).Style('Base')
.Text('Region total ' + CS_TOTAL, 80, 1, 100, 6).AlignRight.Bold.EndBand
.PageFooter(8).Style('Base')
.Text('Page [Page] of [TotalPages]', 0, 1, 180, 6).AlignCenter.EndBand
.EndPage.Data(oSales);
// accessible PDF (PDF/UA is on by default), plus the same data as Excel
oBuilder.SaveToPDF(IncludeTrailingPathDelimiter(aFolder) + 'sales.pdf');
oBuilder.SaveToXLSX(IncludeTrailingPathDelimiter(aFolder) + 'sales.xlsx');
oBuilder.SaveToCSV(IncludeTrailingPathDelimiter(aFolder) + 'sales.csv');
finally
oBuilder.Free;
oSales.Free;
end;
end;生成された sgcReports のヘッダーを使った、C++ Builder での同じレポート。
#include <vcl.h>
#include "sgcReports_Types.hpp"
#include "sgcReports_Model.hpp"
#include "sgcReports_Data.hpp"
#include "sgcReports_Fluent.hpp"
void ExportSalesReport(const String Folder)
{
const String Total = "[FormatFloat('#,0.00', Sum(Sales.Amount))]";
TsgcReportJSONSource *Sales = new TsgcReportJSONSource(NULL);
TsgcReportBuilder *Builder = new TsgcReportBuilder();
try
{
Sales->SourceName = "Sales";
Sales->JSON = "[{\"Region\":\"East\",\"Customer\":\"Acme Corp\",\"Amount\":1450.00},"
"{\"Region\":\"East\",\"Customer\":\"Blue Harbor\",\"Amount\":600.00},"
"{\"Region\":\"North\",\"Customer\":\"Nordic Labs\",\"Amount\":2100.75}]";
Builder->Title("Sales by region")->Author("eSeGeCe")->Units(ruMillimeters)
->Style("Base")->Font("Arial", 10)->EndStyle()
->Style("Group")->Font("Arial", 11)->Bold()->BackColor(0xEEEEEE)->EndStyle()
->Page("")->Paper(rpsA4, roPortrait)->Margins(15)
// one header per region, one line per sale, a subtotal per region
->GroupHeader("Sales.Region", 9)->Style("Group")
->Text("Region: [Sales.Region]", 0, 1, 180, 7)->TagRole(rtrHeading2)->EndBand()
->MasterData("Sales", 6)->Style("Base")
->Text("[Sales.Customer]", 2, 0, 120, 6)
->Text("[Sales.Amount]", 130, 0, 50, 6)->AlignRight()->Format("#,0.00")->EndBand()
->GroupFooter(9)->Style("Base")
->Text("Region total " + Total, 80, 1, 100, 6)->AlignRight()->Bold()->EndBand()
->EndPage()->Data(Sales);
// accessible PDF (PDF/UA is on by default), plus the same data as Excel
Builder->SaveToPDF(IncludeTrailingPathDelimiter(Folder) + "sales.pdf");
Builder->SaveToXLSX(IncludeTrailingPathDelimiter(Folder) + "sales.xlsx");
Builder->SaveToCSV(IncludeTrailingPathDelimiter(Folder) + "sales.csv");
}
__finally
{
delete Builder;
delete Sales;
}
}C# での同じビルダーチェーン。Delphi と同じクラス名を使います。
using System.IO;
using esegece.sgcReports;
public static class SalesReport
{
const string Sales = "[" +
"{\"Region\":\"East\",\"Customer\":\"Acme Corp\",\"Amount\":1450.00}," +
"{\"Region\":\"East\",\"Customer\":\"Blue Harbor\",\"Amount\":600.00}," +
"{\"Region\":\"North\",\"Customer\":\"Nordic Labs\",\"Amount\":2100.75}," +
"{\"Region\":\"North\",\"Customer\":\"Fjord Ltd\",\"Amount\":880.20}]";
const string Total = "[FormatFloat('#,0.00', Sum(Sales.Amount))]";
public static void Export(string aFolder)
{
using (TsgcReportJSONSource oSales = new TsgcReportJSONSource())
using (TsgcReportBuilder oBuilder = new TsgcReportBuilder())
{
oSales.SourceName = "Sales";
oSales.JSON = Sales;
oBuilder.Title("Sales by region").Author("eSeGeCe").Units(TsgcReportUnits.ruMillimeters)
.Style("Base").Font("Arial", 10).EndStyle()
.Style("Group").Font("Arial", 11).Bold().BackColor(0xEEEEEE).EndStyle()
.Page().Paper(TsgcReportPaperSize.rpsA4).Margins(15)
// one header per region, one line per sale, a subtotal per region
.GroupHeader("Sales.Region", 9).Style("Group")
.Text("Region: [Sales.Region]", 0, 1, 180, 7)
.TagRole(TsgcReportTagRole.rtrHeading2).EndBand()
.MasterData("Sales", 6).Style("Base")
.Text("[Sales.Customer]", 2, 0, 120, 6)
.Text("[Sales.Amount]", 130, 0, 50, 6).AlignRight().Format("#,0.00").EndBand()
.GroupFooter(9).Style("Base")
.Text("Region total " + Total, 80, 1, 100, 6).AlignRight().Bold().EndBand()
.EndPage().Data(oSales);
// accessible PDF (PDF/UA is on by default), plus the same data as Excel
oBuilder.SaveToPDF(Path.Combine(aFolder, "sales.pdf"));
oBuilder.SaveToXLSX(Path.Combine(aFolder, "sales.xlsx"));
oBuilder.SaveToCSV(Path.Combine(aFolder, "sales.csv"));
}
}
}dotnet add package esegece.sgcReportssgcReports には、10 の Delphi デモ、8 つの C++ Builder デモ、10 の .NET デモが付属します。以下のカードは Delphi のプロジェクトで、多くには同じ名前の C++ Builder 版と .NET 版があります。
データセットからのマスター詳細の請求書:ヘッダー、明細行、合計、QR コードを、プレビューと PDF で表示します。
地域別にグループ化した売上。グループヘッダー、小計、サマリーバンドの総合計を表示します。
フルーエントビルダーで書いた完全なレポートを、すべての形式にエクスポートします。
2 つのメモで JSON 定義とそのデータを編集して描画します。エラーは JSON パスを示します。
代替テキストと見出しの役割を持つタグ付き PDF/UA-1 出力。veraPDF での確認に使えます。
1 つの準備済みレポートを、PDF、XLSX、CSV、PNG ファイルとして書き出します。
データセットソースを通じて、SQL クエリでデータを供給するレポート。
ページナビゲーション付きの FireMonkey プレビュー。FireMonkey プレビューは Windows で動作します。
Windows と Linux64 向けのコンソールデーモン。ワーカースレッドのプールで、キューに入った JSON ジョブを描画します。
ブラウザのビューア、パラメーター、ダウンロード付きで HTTP 配信するレポート。sgcWebSockets と sgcHTML が必要です。
sgcReports は sgcUI Enterprise に含まれ、単体でも販売しています。PDF 出力とバーコードには sgcPDF エンジンを使うため、どの構成でも sgcPDF が必要です。All-Access バンドルにも含まれます。
無料の .NET Community パッケージ(esegece.sgcReports.Community、.WinForms.Community、.HTML.Community、.AspNetCore.Community)には、エンジン、エクスポート、プレビューが含まれます。Delphi では、ライセンスされた sgcPDF がインストールされている場合にのみ、Community インストーラーが sgcReports を提供します。Delphi と C++ Builder 向けの sgcReportsHTML ブリッジは、登録版のみです。
| 機能 | Community(無料) | 登録版 |
|---|---|---|
| フルーエントビルダー、レポートモデル、JSON 定義 | ✓ | ✓ |
| バンド、グループ、マスター詳細、式 | ✓ | ✓ |
| バーコード | ✓ | ✓ |
| PDF/UA と PDF/A-3 のエクスポート | ✓ | ✓ |
| XLSX、CSV、PNG のエクスポート | ✓ | ✓ |
| WinForms プレビュー | ✓ | ✓ |
| サービスと Linux 向けのヘッドレスエンジン | ✓ | ✓ |
| Delphi と C++ Builder 向けの sgcReportsHTML ブリッジ(HTTP エンドポイント、ビューア、Web デザイナー) | − | ✓ |
TsgcReport、TsgcReportEngine、フルーエントな TsgcReportBuilder。
TsgcReportDataSetSource、TsgcReportJSONSource、TsgcReportEventSource。
TsgcReportPDFExport、TsgcReportXLSXExport、TsgcReportCSVExport、TsgcReportImageExport。
TsgcReportPreviewVCL と TsgcReportPreviewFMX。FireMonkey プレビューは Windows で動作します。
TsgcReportHTTPEndpoint、TsgcReportHTMLViewer、TsgcReportHTMLDesigner。sgcWebSockets Professional 以上と sgcHTML が必要です。登録版
名前空間 esegece.sgcReports で同じクラス名を使えます。ビルダー、ソース、エンジン、エクスポートです。
| 対象 | コンポーネント | プラットフォーム |
|---|---|---|
| Delphi 7 から 13 | モデル、式、データ、レイアウト、エンジン、エクスポート | Windows、Linux64、macOS、iOS、Android |
| C++ Builder 2007 から 13 | 同じクラス | 生成された .hpp ヘッダーと静的ライブラリ |
| VCL プレビュー | TsgcReportPreviewVCL | Windows |
| FireMonkey プレビュー | TsgcReportPreviewFMX | Windows |
| .NET | ビルダー、ソース、エンジン、エクスポート、WinForms プレビュー | Windows。Linux でのヘッドレス利用も可能 |
はい、常に必要です。sgcReports は、sgcPDF エンジンで PDF を書き出し、バーコードを描画します。sgcUI Enterprise には両方が含まれます。Delphi の Community インストーラーでは、ライセンスされた sgcPDF がインストールされている場合にのみ sgcReports が提供されます。PDF エンジンは、アクセシブルな PDF ファイルのタグ付き構造も描画します。
はい、ブラウザ上にあります。sgcReportsHTML ブリッジの TsgcReportHTMLDesigner が、バンドキャンバス、プロパティインスペクタ、ライブプレビューを使って JSON のレポート定義を編集します。コードでは、フルーエントビルダーと JSON 定義が同じモデルを扱えます。保存された定義は、デスクトップアプリケーション、サービス、デーモンのいずれでも読み込めます。
はい。コアは VCL にも FireMonkey にも依存せず、外部 DLL も不要なので、エンジンとエクスポートは Linux64 のコンソールアプリケーションやデーモンで動作します。ReportLinuxDaemon デモと Linux デーモンのトピックには、systemd ユニットが含まれます。同じコードは、Windows サービスでも動作します。
PDF(既定でタグ付きの PDF/UA-1、指定で PDF/A-3)、XLSX、CSV、PNG ページです。すべて同じ準備済みページから作られるので、レポートは一度準備すれば、必要な回数だけエクスポートできます。各エクスポートは、ファイルにもストリームにも書き込めるため、Web レスポンスやメール添付にも使えます。
はい。ただし、スレッドごとに 1 つのエンジンを使います。各ワーカーは、自分のレポート、エンジン、データソース、エクスポートを作成し、フォントマネージャーと読み取り専用の JSON 定義は共有できます。スレッドセーフのトピックに、ワーカープールのパターンを紹介しています。Windows サーバーでは、多数のスレッドのために、起動時に一度だけ sgcReportsConfigureForServer を呼び出すこともできます。
はい。レポート定義を JSON として保存し、実行時に sgcReportLoadFromJSON で読み込めば、新しいレイアウトのために新しいビルドは不要です。ユーザーは Web デザイナーで編集でき、アプリケーションが生成することもできます。読み込み時のエラーには、問題のあるメンバーの JSON パスが示されるため、顧客別のレイアウトのサポートが容易になります。
はい。TsgcReportPreviewVCL は、準備済みのページをナビゲーション、ズーム、フィットモード付きで表示します。TsgcReportPreviewFMX は Windows 上の FireMonkey プレビューで、.NET には WinForms プレビューがあります。プレビューは sgcPDF のビューアコントロールを通じて描画するので、画面は PDF エクスポートと一致します。
はじめに, インストール, 使い始める, TsgcReportBuilder, グループ化レポート, XLSX、CSV、PNG のエクスポート, アクセシブルな PDF, PDF/A, HTTP での配信, Linux デーモン.
Delphi、C++ Builder、.NET。いずれも sgcUI の全製品を網羅しています。