[PDF] パフォーマンス改善

by Wijmo5_jp

HTML

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.grapecity.com/wijmo/5.latest/styles/wijmo.min.css">
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.grid.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.pdf.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.grid.pdf.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.gauge.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/cultures/wijmo.culture.ja.min.js"></script>
<script src="https://demo.grapecity.com/wijmo/sample/scripts/sample.js"></script>
<link rel="stylesheet" href="https://demo.grapecity.com/wijmo/sample/styles/sample.css">
<div class="container">

  <h1>パフォーマンス改善</h1>
  <p>PDF生成処理のパフォーマンスが改善されました。(参考:<a href="https://jsfiddle.net/e1mdafvn/embedded/result,js,html/" target="_blank">旧バージョンのパフォーマンス</a>)</p>
  <label for="rowCount">グリッド行数</label>
  <select id="rowCount">
    <option value="100">100</option>
    <option value="1000">1,000</option>
    <option value="5000">5,000</option>
    <option value="10000">10,000</option>
  </select><br>
  <button id="exportGrid" class="btn btn-default">PDFに出力</button>
  <input id="time">(ms)
  <div id="flexGrid"></div>

</div>

CSS

#flexGrid {
  height: 300px;
  margin-top: 20px;
}

JavaScript

var rowCount = document.getElementById('rowCount');

var flexGrid = new wijmo.grid.FlexGrid('#flexGrid', {
  itemsSource: sample.orders(rowCount.value)
});
flexGrid.columns[1].width = 200;
rowCount.addEventListener('change', function() {
  flexGrid.collectionView.sourceCollection = sample.orders(rowCount.value);
});

document.getElementById('exportGrid').addEventListener('click', function() {
  var now = Date.now();
  var doc = new wijmo.pdf.PdfDocument({
    ended: function(sender, args) {
      wijmo.pdf.saveBlob(args.blob, 'FlexGrid.pdf');
      document.getElementById('time').value = Date.now() - now;
    }
  });
  wijmo.grid.pdf.FlexGridPdfConverter.draw(flexGrid, doc, null, null, {
    embeddedFonts: [ { source: 'https://demo.grapecity.com/wijmo/sample/fonts/ipaexg.ttf', name: 'ipaexg' } ],
    styles: {
      cellStyle: {
        font: { family: 'ipaexg' }
      }
    }
  });
  doc.end();
});