RapidReport 製品ドキュメント

旧バージョンとの互換性

RapidReportのバージョンアップによって、 旧バージョンとは異なる動作をするようになる場合があるために、問題を生ずる可能性があります。 そこで、新しいバージョンを使っていたとしても、 旧バージョンと同じ動作となるようにするための互換性オプションが用意されています。

互換性オプションは、Report.Compatibilityというクラスのクラス変数として用意されており、 プログラムの実行開始時に一度だけ設定することで、全体に適用されます。 また、レポートデザイナ上では「設定」ダイアログで各オプションを有効にするかを指定できます。

※ レポートデザイナ上での互換性オプションの設定はデザイナの動作にのみ影響し、プログラムの実行時には反映されません。
互換性オプションの設定が必要な場合は、必ずプログラム内でも設定を行ってください。

また、バージョンアップによってお客様が開発した既存のプログラムに修正を加える必要が生じる場合もあります。 その対応方法についても、ここで紹介します。 (プログラムの修正方法などについて、不明な点があればQAフォーラムなどのサポートをご利用ください)

バージョン5.16以降でのSystem.Drawing.Commonの除去(.NET5以降/.NET Coreのみ)

.NET6において、System.Drawing.CommonはWindows以外の環境ではサポートされなくなりました。

RapidReportではSystem.Drawing.Commonを画像やバーコードの出力に使用していましたが、 5.16ではPDF出力機能およびExcel出力機能でこれを使用しない形に修正されました。 プレビュー/直接印刷機能はWindowsのみの対応のため、従来通りSystem.Drawing.Commonを使用します。 また、Excel出力機能の場合はSystem.Drawing.Commonの代わりにSkiaSharpを追加する必要があります。

出力機能の種類 System.Drawing.Common使用
プレビュー/直接印刷
※Windowsのみ対応
使用する
PDF出力 使用しない
Excel出力 使用しない
※代わりにSkiaSharpを使用

.NET5以降/.NET Core版を利用して旧バージョンで作成したプログラムをバージョン5.16に上げる場合は「プログラム開発の準備」を確認の上、ライブラリの設定を行ってください。

画像の取扱い方法

イメージローダを用いて動的な画像を出力する場合、5.15以前では画像データをSystem.Drawing.Image型で登録していましたが、 System.Drawing.Commonの除去により5.16ではByte配列で登録するように変更となりました。

そのため、5.15での以下のコードは修正する必要があります。

  // C# v5.15以前  
  ImageMap imageMap = new ImageMap();
  imageMap.Add("image1", new Bitmap("image1.png"));
  imageMap.Add("image2", new Bitmap("image2.png"));
  imageMap.Add("image3", new Bitmap("image3.png")) ;
  ' VisualBasic v5.15以前
  Dim imageMap As New ImageMap
  imageMap.Add("image1", New Bitmap("image1.png"))
  imageMap.Add("image2", New Bitmap("image2.png"))
  imageMap.Add("image3", New Bitmap("image3.png"))

5.16ではByte配列を登録するように、以下のように修正します。

  // C# v5.16
  ImageMap imageMap = new ImageMap();
  imageMap.Add("image1", File.ReadAllBytes("image1.png"));
  imageMap.Add("image2", File.ReadAllBytes("image2.png"));
  imageMap.Add("image3", File.ReadAllBytes("image3.png")) ;
  ' VisualBasic v5.16
  Dim imageMap As New ImageMap
  imageMap.Add("image1", File.ReadAllBytes("image1.png"))
  imageMap.Add("image2", File.ReadAllBytes("image2.png"))
  imageMap.Add("image3", File.ReadAllBytes("image3.png"))

バーコードの表示内容

System.Drawing.Commonの除去により5.16ではバーコードの実装方法が変更されたため、5.15以前と出力内容に若干の差異が生じます。

例えば、PDFへのバーコード出力結果の差異を以下に示します。

_5_16_Drawing.png

独自に機能拡張した要素について

独自に機能拡張した要素を作成して使用している場合、バージョン5.16ではSystem.Drawing.Commonの除去によって要素レンダラの実装内容が変更されたため、修正が必要となる場合があります。 修正にあたっては、RapidReport .NET Core版のソースコードを参照してください。

また、修正方法が不明な場合はサポートしますので、QAフォーラムなどにご連絡ください。

バージョン5.13以前でのPDF出力時のバーコード位置

バージョン5.14で、PDFファイルを出力した場合のバーコード位置に調整が入りました。

5.13以前では、PDF出力を行った場合、レポートデザイナでデザインした内容に比べてバーコードの位置がずれていました。

_5_13_PdfBarcode.png

5.14以降をご利用の場合でも、従来通りの出力内容としたい場合は、_5_13_PdfBarcodeという変数をTrueにします。

  // C#
  Report.Compatibility._5_13_PdfBarcode = true;
  ' VisualBasic
  Report.Compatibility._5_13_PdfBarcode = True
  // Java
  Report.Compatibility._5_13_PdfBarcode = true;

バージョン5.10での、Json読み込みライブラリの変更について(Javaのみ)

バージョン5.10で、Java版のJson読み込みライブラリがJsonicからJacksonに変更されました。

※ 5.10以降でも、当面は従来通りJsonicを利用し続けることも可能です。
その場合は、インストーラに含まれる lib/java/jsonic/jsonic-1.3.10.jar をご利用ください。

これまでJsonicを利用していて、これをJacksonに置き換える際は、ReadUtil.readJsonの内容を修正する必要があります。

拡張機能についての注意点

独自の要素など、拡張機能を作成して利用していた場合、Jacksonへの変更の影響を受ける可能性があります。

Jsonicでは、帳票定義ファイルに含まれる実数値をBigDecimal型で取得していましたが、Jacksonではfloat型となります。 そのため、拡張機能クラス内に、以下のようにプロパティの値がBigDecimal型であることを前提にしたコードが含まれていると、実行時にエラーとなります。

  // designはElementDesign型のオブジェクト
  float prop = ((BigDecimal)design.get("prop")).floatValue();

このコードは、以下のように書き換えることで動作するようになります(Jsonic利用時であっても同じコードで動作します)。

  float prop = Cast.toFloat(design.get("prop"));

バージョン5.9以前でのXLSXファイル内容

バージョン5.10で、XLSXファイルを出力した場合のセルサイズに調整が入りました。

5.9以前ではXLSXファイルの内容がページサイズに収まらない場合が多かったのですが、5.10にて加えられた調整によってページサイズをはみ出す場合が少なくなりました。

_5_9_XlsxRowColSize.png

5.10以降をご利用の場合でも、従来通りの出力内容としたい場合は、_5_9_XlsxRowColSizeという変数をTrueにします。

  // C#
  Report.Compatibility._5_9_XlsxRowColSize = true;
  ' VisualBasic
  Report.Compatibility._5_9_XlsxRowColSize = True
  // Java
  Report.Compatibility._5_9_XlsxRowColSize = true;

バージョン5.5以前での垂直揃え(.NETのみ)

バージョン5.6で、.NETのプレビュー/直接印刷にて、テキスト/フィールド要素の垂直揃えに[center(中央揃え)][bottom(下揃え)]のいずれかを指定した場合で、 内容が複数行に渡って要素の高さを越えた際の表示内容が修正されました。

以下のように、5.5以前では要素の上側に内容がはみ出して表示されていましたが、5.6以降でははみ出すことはなくなります。

5_5_VAlign.png

5.6以降をご利用の場合でも、従来通りの出力内容としたい場合は、_5_5_VAlignという変数をTrueにします。

  // C#
  Report.Compatibility._5_5_VAlign = true;
  ' VisualBasic
  Report.Compatibility._5_5_VAlign = True

バージョン4.37以前での、テキスト割付

バージョン4.37以前では、PDF出力を行った場合、レポートデザイナでデザインした内容に比べて差異が生じていました。
(配置された要素幅に出力可能な文字数が異なる、文字間隔が異なる、改行位置が異なる、等)

4_37_Typeset.png

バージョン5.0で、等幅フォントを利用している場合に限り、デザイン内容とPDF出力の内容がほぼ一致するよう、 適切にテキストの割付が行われるようになりました。

4_37_Typeset_Fix.png

この修正のために、PDFレンダラと直接印刷/プレビュー機能のいずれかを利用している場合、 バージョンアップによってテキストの割付方法が変わります。

※直接印刷/プレビューのみを利用し、PDF出力を利用していない場合でも、この修正による影響を受けることにご注意ください。

5.0以降をご利用の場合でも、従来通りの出力内容としたい場合は、_4_37_Typesetという変数をTrueにします。

  // C#
  Report.Compatibility._4_37_Typeset = true;
  ' VisualBasic
  Report.Compatibility._4_37_Typeset = True
  // Java
  Report.Compatibility._4_37_Typeset = true;

バージョン4.37以前での、改行時のトリム

バージョン5.0にて、[改行して全体表示]または[文字列行分割]によって改行が行われた際、 改行後の行頭の空白がトリムされるようになりました。

以前のバージョンでは、PDF出力時または文字列行分割機能を利用している場合、 行頭に空白があってもトリムされずに出力されていました。

4_37_WrappedTextNoTrim.png

5.0をご利用の場合でも、従来通りの出力内容としたい場合は、_4_37_WrappedTextNoTrimという変数をtrueとします。

  // C#
  Report.Compatibility._4_37_WrappedTextNoTrim = true;
  ' VisualBasic
  Report.Compatibility._4_37_WrappedTextNoTrim = True
  // Java
  Report.Compatibility._4_37_WrappedTextNoTrim = true;

バージョン4.37以前での、画像のスケーリング

バージョン5.0にて、画像要素を描画する際、画像の解像度(Dpi)に基づいて正しい大きさで描画されるようになりました。

以前のバージョンでは、画像のピクセルサイズを単位変換せず、そのままポイント単位で描画を行っていました。 例えば、100 x 100ピクセルの画像は、100 x 100ポイントというサイズで描画されるので、 画像のDpiが96だった場合、本来のサイズよりも 96/72 = 約1.33倍 に拡大して表示されていました。

5.0以降をご利用の場合で、従来通りの動作としたい場合は、_4_37_ImagePixelScaleという変数をtrueとします。

  // C#
  Report.Compatibility._4_37_ImagePixelScale = true;
  ' VisualBasic
  Report.Compatibility._4_37_ImagePixelScale = True
  // Java
  Report.Compatibility._4_37_ImagePixelScale = true;

バージョン4.37以前での、毎ページ表示

バージョン5.0にて、[毎ページ表示]を指定することによって表示されたコンテントにグループが含まれていた場合、 そのグループには空データが割り当てられて表示されるようになりました。
※以前のバージョンでは、コンテントに割り当てられたデータ全体を表示していました。
※[毎ページ空グループ]プロパティにチェックを入れることで、空データを表示するように指定可能でしたが、このプロパティは5.0で廃止されました。

5.0以降をご利用の場合で、従来通りの動作としたい場合は、_4_37_EveryPageAllDataという変数をtrueとします。

  // C#
  Report.Compatibility._4_37_EveryPageAllData = true;
  ' VisualBasic
  Report.Compatibility._4_37_EveryPageAllData = True
  // Java
  Report.Compatibility._4_37_EveryPageAllData = true;

バージョン4.34以前での、プレビュー/直接印刷での中央寄せ/右寄せ(.NETのみ)

バージョン4.35にて、.NET版のGDIレンダラのテキスト/フィールド要素にて、中央寄せまたは右寄せを指定した場合、 出力する文字列末尾の空白幅も含めて、表示位置が設定されるようになりました。
※以前のバージョンでは、末尾の空白は無視されていました。

4_34_GdiTextNotMeasureTrailingSpaces

4.35以降の.NET版をご利用の場合で、従来通り文字列末尾の空白を無視したい場合は、_4_34_GdiTextNotMeasureTrailingSpacesという変数をtrueとします。

  // C#
  Report.Compatibility._4_34_GdiTextNotMeasureTrailingSpaces = true;
  ' VisualBasic
  Report.Compatibility._4_34_GdiTextNotMeasureTrailingSpaces = True

バージョン4.34以前での、PDF出力での改行して全体表示

バージョン4.35にて、PDF出力でのテキスト/フィールド要素の「改行して全体表示」にて、 単語(半角)の途中、句読点の直前、開きカッコの直後、閉じカッコの直前等での改行ができるだけ避けられるようになりました。

4_34_PdfWrapNoRule

4.35以降をご利用の場合で、従来通りの改行方法としたい場合は、_4_34_PdfWrapNoRuleという変数をtrueとします。

  // C#
  Report.Compatibility._4_34_PdfWrapNoRule = true;
  ' VisualBasic
  Report.Compatibility._4_34_PdfWrapNoRule = True
  // Java
  Report.Compatibility._4_34_PdfWrapNoRule = true;

バージョン4.34以前での改行(.NETのみ)

バージョン4.35にて、.NET版のGDIレンダラでの[縦書き]、PDFレンダラでの[縦書き]および[改行して全体表示]、wsplitメソッド、文字列行分割機能、 での改行位置の判断が文字列中にLF(ラインフィード)が出現するたびに行われるようになりました。
※以前のバージョンではCR(キャリッジリターン)で改行となっていました。

Java版では以前のバージョンからLFで改行する動作となっていたので、この修正によりJava/.NETで動作が統一されました。

4.35以降の.NET版をご利用の場合で、従来通りCRでの改行としたい場合は、_4_34_TextSplitByCrという変数をtrueとします。

  // C#
  Report.Compatibility._4_34_TextSplitByCr = true;
  ' VisualBasic
  Report.Compatibility._4_34_TextSplitByCr = True

バージョン4.32.1以前に作成したGdi要素レンダラの移行(.NETのみ)

バージョン4.33にて、GdiTextクラスの_GetStringFromatメソッドは、引数としてalignment, lineAlignment, formatFlagsを受け取るようになり、 メソッド内でこれらのプロパティを設定した上でStringFormatオブジェクトを返すように仕様変更されました。 これにより、StringFormatへの設定をより柔軟に行えるようになりました。

4.32.1以前ではこのメソッドに引数はなく、単にStringFormatのインスタンスを返すようになっていたため、 バージョンアップを行うとコンパイルエラーが発生します。

4.33のGdiTextクラスでは、_GetStringFormatは以下のように実装されています。 これを参考に、バージョンアップの際はメソッドの修正を行ってください。

    Protected Overridable Function _GetStringFormat(
      alignment As StringAlignment,
      lineAlignment As StringAlignment,
      formatFlags As StringFormatFlags) As StringFormat
        Dim ret As New StringFormat()
        ret.Alignment = alignment
        ret.LineAlignment = lineAlignment
        ret.FormatFlags = formatFlags
        Return ret
    End Function

バージョン4.32.1以前に作成した独自プレビュー画面の移行(.NETのみ)

バージョン4.33にて、PrintPreviewZoomのAutoFit、およびAutoFitWidthプロパティがPrintPreviewに移動しました。 独自のプレビュー画面を用意している場合、これらのプロパティを利用しているならば、コードの書き換えが必要になります。

  // C#
  this.PrintPreviewZoom.AutoFit = true; 
  this.PrintPreview.AutoZoomFit = true; に変更
  
  this.PrintPreviewZoom.AutoFitWidth = true; 
  this.PrintPreview.AutoZoomFitWidth = true; に変更
  ' VisualBasic
  Me.PrintPreviewZoom.AutoFit = True 
  Me.PrintPreview.AutoZoomFit = True に変更
  
  Me.PrintPreviewZoom.AutoFitWidth = True 
  Me.PrintPreview.AutoZoomFitWidth = True に変更

また、Designerファイルでエラーが発生する可能性があります。この場合、エラーが発生している行を手動で削除して下さい。

  // C# XX.Designer.cs
  this.PrintPreviewZoom.AutoFit = false;  削除
  this.PrintPreviewZoom.AutoFitWidth = false;  削除
  ' VisualBasic XX.Designer.vb
  Me.PrintPreviewZoom.AutoFit = False    削除
  Me.PrintPreviewZoom.AutoFitWidth = False  削除

バージョン4.32.1以前のプレビュー画面での見開き表示(.NET版のみ)

.NET版のバージョン4.33以降で、プレビュー画面に見開き表示機能が追加されました。

4.33以降をお使いの場合で、もし見開き表示機能を利用しない場合は、_4_32_PreviewMultiPageDisabledという変数をtrueとします。

  // C#
  Report.Compatibility._4_32_PreviewMultiPageDisabled = true;
  ' VisualBasic
  Report.Compatibility._4_32_PreviewMultiPageDisabled = True

バージョン4.32.1以前の「空行を出力」機能

バージョン4.33以降では、グループの「空行を出力」機能によって出力されたコンテントに、さらに子グループが存在した場合、 その子グループの内容も空行として出力するようになりました。(4.32.1以前では子グループは出力されませんでした)

4_32_BlankSubGroup

※「空行を出力」を設定したグループ以下に、子グループが存在しないならば、この変更による影響はありません。

4.33以降をお使いの場合で、もし4.32.1以前の動作のままとしたい場合は、_4_32_BlankSubGroupという変数をtrueとします。

  // C#
  Report.Compatibility._4_32_BlankSubGroup = true;
  ' VisualBasic
  Report.Compatibility._4_32_BlankSubGroup = True
  // Java
  Report.Compatibility._4_32_BlankSubGroup = true;

なお、このオプションを有効にした場合、クロス集計表の空行部分の要素(罫線など)が出力されなくなります。

バージョン4.31以前のコンテントの[改ページしない]指定(Java版のみ)

.Java版のバージョン4.31以前では、コンテントの[改ページしない]機能の動作に問題がありました。

複数の階層を持つ帳票の場合、ページの終端に配置されるコンテントのうち、 最上位のものだけを改ページ抑止チェックの対象とすべきところを、 全ての階層のコンテントを対象にしていました。 このため、.NET版(レポートデザイナを含む)の動作と、改ページ位置が異なる場合がありました。

4.32以降をお使いの場合で、もし4.31以前の動作のままとしたい場合は、 _4_31_unbreakableという変数をtrueとします。

  // Java
  Report.Compatibility._4_31_unbreakable = true;

バージョン4.15以前のプレビュー画面でのテキスト検索(.NETのみ)

.NET版のバージョン4.16以降で、プレビュー画面にテキスト検索機能が追加されました。

4.16以降をお使いの場合で、もしテキスト検索機能を利用しない場合は、 _4_15_PreviewSearchDisabledという変数をtrueとします。

  // C#
  Report.Compatibility._4_15_PreviewSearchDisabled = true;
  ' VisualBasic
  Report.Compatibility._4_15_PreviewSearchDisabled = True

なお、FmPrintPreviewクラスのSearchEnabledプロパティによって、 テキスト検索機能を有効にするかを個別に設定することもできます。

バージョン4.13.2以前のavrメソッド(.NETのみ)

.NET版のバージョン4.13.2以前では、0件のデータに対してavrメソッドを呼ぶと、 NULLではなく0が返されていました。 4.14以降ではNULLが返されるように修正されました。

4.14以降をお使いの場合で、もし4.13.2以前と同じく0を返すようにしたい場合は、 _4_13_2_AverageZeroという変数をtrueとします。

  // C#
  Report.Compatibility._4_13_2_AverageZero = true;
  ' VisualBasic
  Report.Compatibility._4_13_2_AverageZero = True

Java版では、4.13.2以前でもNULLが返されるので、 同様のオプションはありません。

バージョン4.6以前のPDF出力時の太字

バージョン4.6以前では、PDF出力時に[フォント][太字]にチェックを入れていた場合、 文字が太くなりすぎていました。 4.7以降では適正な太さで出力されます。

4.7以降をお使いの場合で、もし4.6以前の文字太さとしたい場合は _4_6_PdfFontBold という変数をtrueとします。

  // C#
  Report.Compatibility._4_6_PdfFontBold = true;
  ' VisualBasic
  Report.Compatibility._4_6_PdfFontBold = True
  // Java
  Report.Compatibility._4_6_PdfFontBold = true;

Copyright (c) 2013, SystemBase Co.,Ltd. All rights reserved.