設定フォーマット 🔗
PicoPDFではデータをPDF変換するためにJSONフォーマットの設定ファイルを利用する。
設定ファイルの内容について説明する。
PDF変換情報 🔗
| 名前 | タイプ | 初期値 | 説明 |
|---|---|---|---|
| Size | string または [number, number] | A4 | 用紙サイズ、文字列の場合はA0~A5またはB0~B5、配列の場合は幅と高さを指定 |
| Orientation | string | Vertical | 用紙向き、VerticalかHorizontalを指定 |
| DefaultFont | string または FontPath[] | 必須 | フォント名、フォントファイル名、配列指定時はフォールバックフォントとなる |
| Header | string | ページヘッダセクション名 | |
| Footer | string | ページフッタセクション名 | |
| Detail | string または { .. } | 必須 | ディティールセクション名、またはサブセクション構造 |
| Padding | [number ..] | [0, 0, 0, 0] | ページ余白、最大4つまで上右下左の順に指定する |
| DefaultCulture | string | InvariantCulture | 指定がない場合のCultureInfo |
サブセクション構造は入れ子構造で指定する。
| 名前 | タイプ | 初期値 | 説明 |
|---|---|---|---|
| BreakKey | string | セクションブレークキー | |
| Header | string | ヘッダセクション名 | |
| Footer | string | フッタセクション名 | |
| Detail | string または { .. } | 必須 | ディティールセクション名、またはサブセクション構造 |
サブセクションを持たない場合は次のように記述する。
{
"Header": "PageHeader",
"Detail": "Detail",
"Footer": "PageFooter",
}
2段階のサブセクションを持つ場合は次のように記述する。
{
"Header": "PageHeader",
"Detail": {
"BreakKey": "Key1",
"Header": "Header1",
"Detail": {
"BreakKey": "Key2",
"Header": "Header2",
"Detail": "Detail",
"Footer": "Footer2",
},
"Footer": "Footer1",
},
"Footer": "PageFooter",
}
セクション設定情報 🔗
PDFへ変換情報で指定されたセクション名の定義を行う。
| 名前 | タイプ | 初期値 | 説明 |
|---|---|---|---|
| Type | string | 必須 | HeaderSection、DetailSection、TotalSection、FooterSectionのいずれか指定 |
| Name | string | 必須 | セクション名、重複不可 |
| Height | number | 必須 | セクションの高さ |
| ViewMode | string | Type依存 | Every、PageFirst、First、Lastのいずれか指定 |
| PageBreak | bool | false | 改ページ、trueの場合、印字後に改ページを行う |
| Elements | Element[] | 必須 | PDF表示要素 |
TotalSectionはサブセクションの境界でDetailSectionの次に表示される。
FooterSectionはサブセクションの境界でページ下部に表示される。
ViewModeで出現タイミングを変更できる。
Everyは毎ページ表示される。
PageFirstはページ先頭のみ表示される。
Firstはキーブレイク時のみ表示される。
Lastはキーブレイク後に表示される。
ViewModeはセクションのタイプ次第で指定できるものが異なる。
| 名前 | 初期値 | Every | PageFirst | First | Last |
|---|---|---|---|---|---|
| HeaderSection | First | ○ | ○ | ○ | × |
| DetailSection | Every | ○ | × | × | × |
| TotalSection | Last | ○ | × | × | ○ |
| FooterSection | Last | ○ | × | × | ○ |
PDF表示要素 🔗
セクションのElementsとして指定する。
座標指定はセクション内のローカル座標系指定となる。
共通プロパティ:
| 名前 | タイプ | 初期値 | 説明 |
|---|---|---|---|
| X | number | 必須 | X座標 |
| Y | number | 必須 | Y座標、用紙左上を原点とした座標系 |
| Type | string | 必須 | 要素タイプ、詳細は後述 |
| Name | string | ”” | 要素名 |
Typeで指定した要素タイプに応じて設定できるプロパティが異なる。
-
TextElement:
固定文字を表示する。名前 タイプ 初期値 説明 Text string 必須 固定表示テキスト Font string または FontPath[] DefaultFont フォント、配列指定時はフォールバックフォントとなる Size number 必須 文字サイズ Alignment string Start 文字寄せ方向、Start、Center、Endのいずれか指定 Style string None 文字スタイル Width number 0 テキスト幅 Height number 0 テキスト高さ Color string 文字色 -
BindElement:
データの内容をバインドして表示する。名前 タイプ 初期値 説明 Bind string 必須 バインドプロパティ名 Format string ”” バインド時のフォーマット Font string または FontPath[] DefaultFont フォント、配列指定時はフォールバックフォントとなる Size number 必須 文字サイズ Alignment string Start 文字寄せ方向、Start、Center、Endのいずれか指定 Style string None 文字スタイル Width number 0 テキスト幅 Height number 0 テキスト高さ Color string 文字色 Culture string DefaultCulture フォーマット時のCultureInfo -
SummaryElement:
データの内容を集計してバインドする。名前 タイプ 初期値 説明 Bind string ”” バインドプロパティ名 Format string ”” バインド時のフォーマット Font string または FontPath[] DefaultFont フォント、配列指定時はフォールバックフォントとなる Size number 必須 文字サイズ Alignment string Start 文字寄せ方向、Start、Center、Endのいずれか指定 Style string None 文字スタイル Width number 0 テキスト幅 Height number 0 テキスト高さ Color string 文字色 SummaryType string Summary サマリータイプ SummaryMethod string Group サマリー方法、SummaryTypeがPageCountの場合のみ初期値がPageになる BreakKey string ”” ブレークキーが変更あったタイミングでサマリーをクリアする Culture string DefaultCulture フォーマット時のCultureInfo SummaryTypeは集計方法などを指定する。
名前 説明 Summary 合計 Count カウント Average 平均 Maximum 最大値 Minimum 最小値 PageCount ページ数カウント SummaryMethodはサマリー方法の範囲を指定する。
Incrementalとついたものは集計の途中結果を表示する。
FooterSectionが毎ページ表示される設定になっている場合にGroupIncrementalを指定すれば表示位置までのセクション計が表示される。名前 説明 Page ページ内計(セクション毎にリセットされる) PageIncremental ページ内計(セクション毎にリセットされる)、集計途中結果 CrossSectionPage ページ内計(セクション毎にリセットされない) CrossSectionPageIncremental ページ内計(セクション毎にリセットされない)、集計途中結果 Group セクション計 GroupIncremental セクション計、集計途中結果 All 全ページ計 AllIncremental 全ページ計、集計途中結果 -
LineElement、CrossSectionLineElement:
直線を表示する。名前 タイプ 初期値 説明 Width number 0 幅 Height number 0 高さ Color string 色 LineWidth number 1 線の太さ CrossSectionLineElementはHeaderSectionに配置して、セクションの高さを超えるように設定すると、ペアとなるTotalSection、FooterSectionまで貫通する。
TotalSection、FooterSectionが表示されない場合は最後のDetailSectionまで貫通する。 -
RectangleElement、CrossSectionRectangleElement:
四角形を表示する。名前 タイプ 初期値 説明 Width number 0 幅 Height number 0 高さ Color string 色 LineWidth number 1 線の太さ CrossSectionRectangleElementはHeaderSectionに配置して、セクションの高さを超えるように設定すると、ペアとなるTotalSection、FooterSectionまで貫通する。
-
FillRectangleElement、CrossSectionFillRectangleElement:
塗りつぶした四角形を表示する。名前 タイプ 初期値 説明 Width number 0 幅 Height number 0 高さ LineColor string 線の色 FillColor string 背景色 LineWidth number 1 線の太さ CrossSectionFillRectangleElementはHeaderSectionに配置して、セクションの高さを超えるように設定すると、ペアとなるTotalSection、FooterSectionまで貫通する。
TotalSection、FooterSectionが表示されない場合は最後のDetailSectionまで貫通する。 -
ImageElement:
画像を表示する。名前 タイプ 初期値 説明 Path string ”” 画像ファイルパス Bind string ”” バインドプロパティ名 ZoomWidth float 1.0 幅拡大率 ZoomHeight float 1.0 高さ拡大率 PathかBindのどちらかは指定しないといけない。
文字スタイル 🔗
文字スタイルは下記からなる。
複数指定時は Underline | Border のように指定する。
| 名前 | 説明 |
|---|---|
| None | スタイルなし |
| Underline | 下線(ベースラインに下線が引かれる) |
| DoubleUnderline | 二重下線(ベースラインに二重下線が引かれる) |
| BorderTop | 上枠線 |
| BorderLeft | 左枠線 |
| BorderRight | 右枠線 |
| BorderBottom | 下枠線 |
| Strikethrough | 取り消し線 |
| DoubleStrikethrough | 二重取り消し線 |
| ShrinkToFit | Widthの範囲で縮小して表示 |
| Clipping | WidthとHeightの範囲で切り抜く |
| Stroke | フォントをPDFの直線や3次ベジェ曲線に変換して描画する |
| Border | 上下左右の枠線 |
Border系はWidth、Heightの指定がないと文字に合わせて自動設定される。
Width、Heightの指定がある場合は文字によらずWidth、Heightを優先する。
ShrinkToFit、Clippingの指定がない場合は文字が枠線をはみ出す。
Underline系は常にWidthを無視する。
これはAlignmentを指定した場合に、文字寄せ方向によらず下線を引くためである。
フォント 🔗
フォントは登録済みフォント名を指定する方法とフォントファイル名を指定する方法がある。
OS標準インストールのフォント名が指定できる。(FontRegisterを独自指定している場合はその限りではない)
フォントファイルは.TTF、.OTFはファイル名そのままで構わない。
フォントファイルに.TTCのように複数フォントを指定する場合はファイル名の後に ,0 や ,1 のように使用したいフォントのインデックスをつける必要がある。
フォントをPDFに埋め込むかどうかはPath、Embedで指定する。
{
"DefaultFont": "/usr/share/fonts/NotoSansJP-VariableFont_wght.ttf", // TTF形式の場合
"DefaultFont": "/usr/share/fonts/NotoSansCJK-Regular.ttc,0", // TTCフォントのインデックス0を指定する場合
"DefaultFont": "/usr/share/fonts/NotoSansCJK-Regular.ttc,1", // TTCフォントのインデックス1を指定する場合
"DefaultFont": {"Path": "NotoSansJP-VariableFont_wght.ttf", "Embed": "PossibleEmbed"}, // Embedを指定する場合
}
Embedでフォントの埋め込み要否を指定する。
| 名前 | 説明 |
|---|---|
| NotEmbed | フォントを埋め込まない |
| PossibleEmbed | OS/2のfsTypeで埋め込み可能ならPDFにフォントを埋め込む |
| ForceEmbed | OS/2のfsTypeを無視してPDFにフォントを埋め込む、利用者がライセンスを管理すること |
| Stroke | フォントをPDFの直線や3次ベジェ曲線に変換して描画する |
フォントにグリフが存在しない場合はフォールバックフォントを調べる。
Element系にFont指定があると優先的に調べ、その後DefaultFontを調べる。
TextElementがフォントを探す順番は Font1→Font2→Font3→Font4 である。
BindElementがフォントを探す順番は Font5→Font3→Font4 である。
SummaryElementがフォントを探す順番は Font3→Font4 である。
どのフォントにもグリフがないと最初のフォントのGID=0(.notdef)が表示される。
{
"DefaultFont": ["Font3", "Font4"],
"Sections": [
{"Type": "HeaderSection", "Name": "PageHeader", "Height": 50, "Elements": [
{"Type": "TextElement", "Text": "Foo", "Size": 30, "X": 10, "Y": 0, "Font": ["Font1", "Font2"]},
{"Type": "BindElement", "Bind": "Bar", "Size": 30, "X": 10, "Y": 0, "Font": "Font5"},
{"Type": "SummaryElement", "Bind": "Baz", "Size": 30, "X": 10, "Y": 0},
]},
],
}