はじめに
yagisan-reportsとは
yagisan-reportsは、WebブラウザとNode.jsで動作するJavaScript製の帳票エンジンです。
- HTML、JSX、XAML、Androidに影響を受けた宣言的なXML形式のテンプレートで、Web開発者が読み書きしやすいように意識して設計しています。
- JIS第四水準漢字(JIS X 0213:2004)、異体字、縦書き、禁則処理、複雑な表組みなど、日本語帳票に必要な機能をサポートしています。
- 改ページ制御を自動で行うことができ、可変帳票も問題ありません。数百ページ規模の大量ページ出力も高速に処理可能です。
- npmライブラリとして提供されており、標準的なWeb開発のツールチェインに組み込むことができます。
- Webブラウザ単体で帳票出力が可能です。帳票サーバーを排除して大幅なコスト削減を図ったり、フロント側の対応だけで帳票機能を追加することができます。
料金
yagisan-reportsは有償製品ですが、開発やテスト(CI/CD環境を含む)での使用は無償です。
本番運用での運用時のみ、有償契約が必要となります。 契約は**プロダクト単位(または組織単位:エンタープライズ版)**で行うため、サーバー台数やユーザー数に応じた追加費用は一切発生しません。
有償契約の詳細や無償使用(開発者ライセンス)については、次のページをご覧ください。
今すぐ動かしてみる
yagisan-reportsは 5分以内 で実際に動作する状況を確認いただけます。 インストールやユーザー登録等は一切不要です。
ライブデモ
https://demo.yagisan.app/ では、現実の帳票を想定したサンプルが多数用意されています。
Webブラウザで動かしてみる
次のコードをコピーし、HTMLファイル(例えば index.html)として保存します。
このHTMLファイルをWebブラウザで開いてボタンをクリックすると、帳票PDFが出力されます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<script src="https://cdn.jsdelivr.net/npm/@yagisan-reports/sdk@1.0.1/umd.js" defer></script>
<script type="module">
YagisanReports.globalOptions.workerUrl = 'https://cdn.jsdelivr.net/npm/@yagisan-reports/sdk@1.0.1/reportworker.js';
YagisanReports.globalOptions.fontUrl = 'https://cdn.jsdelivr.net/npm/@yagisan-reports/sdk@1.0.1/';
const buttonEl = document.getElementById('generateButton');
buttonEl.addEventListener('click', async ev => {
buttonEl.disabled = true;
// 帳票テンプレートファイルのダウンロード
const yrtUrl = 'https://www.yagisan.app/samples/1.0/hello.yrt';
const yrt = await fetch(yrtUrl).then(res => res.arrayBuffer());
// 帳票エンジンのセットアップ
const engine = YagisanReports.createEngine();
const template = await engine.loadTemplate(yrt);
const generator = await template.createPdfReportGenerator();
// 帳票の生成
const report = await generator.generate({
message: 'hello!\nyagisan-reports!!'
});
const pdf = await report.getContent();
// 生成したPDFのダウンロード
download('hello.pdf', pdf);
// 帳票エンジンの破棄
generator.dispose();
template.dispose();
engine.dispose();
buttonEl.disabled = false;
});
function download(filename, buff) {
const blob = new Blob([buff], {type: 'application/pdf'});
const blobUrl = URL.createObjectURL(blob);
const anchor = document.createElement('a');
anchor.download = filename;
anchor.href = blobUrl;
document.body.appendChild(anchor);
anchor.click();
anchor.remove();
URL.revokeObjectURL(blobUrl);
}
</script>
</head>
<body>
<button id="generateButton">帳票を生成して保存</button>
</body>
</html>