画像を配置したSpreadをJSONに出力して読み込むと、画像のサイズが正しく復元されない

文書番号 : 84746     文書種別 : 不具合     登録日 : 2019/12/18     最終更新日 : 2020/01/22
文書を印刷する
対象製品
SpreadJS(Ver.10.x.x -)
状況
修正済み
詳細
シートいっぱいのサイズの画像を配置したSpreadをJSONに出力した後、出力したJSONから読み込みを行った場合、画像が1行・1列分縮小されて表示されます。

【再現手順】
1.Spreadとボタンを配置したHTMLファイルを用意する
2.1.のファイルに下記のサンプルコードを追加する
★サンプルコード(JavaScript)
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
var targetSheet = spread.getActiveSheet();
targetSheet.setRowCount(10, GC.Spread.Sheets.SheetArea.viewport);
targetSheet.setColumnCount(7, GC.Spread.Sheets.SheetArea.viewport);

//任意の画像を読み込みます
targetSheet.pictures.add("f3", "test.png", 0, 0)

document.getElementById('button1').onclick = function () {
  //一度JSON化して再度JSONから読み込みます
  var json = spread.toJSON();
  var jsonTxt = JSON.stringify(json);
  var json = JSON.parse(jsonTxt);
  spread.fromJSON(json);
}

3. ボタンを押下して、再度画像を読み込む
回避方法
SpreadJS (Ver.13.0.4)で修正済み

Ver.13.0.4より前のバージョンでは次の方法で回避可能です。

Spreadに配置した画像に対して、以下のようにendRow、endRowOffset、endColumn、endColumnOffsetを設定します。

★サンプルコード(JavaScript)
//任意の画像を読み込みます
//activeSheet.pictures.add("f3", "test.png", 0, 0)
var picture = targetSheet.pictures.add("f3", "test.png", 0, 0)

var rowHeight = targetSheet.getRowHeight(1);
var ColumnWidth = targetSheet.getColumnWidth(1);
picture.endRow(10);
picture.endRowOffset(rowHeight);
picture.endColumn(7);
picture.endColumnOffset(ColumnWidth);