印刷
印刷機能により、スプレッドシートの内容を紙のドキュメントとして印刷したり、オフライン閲覧や共有のために PDF 形式へエクスポートしたりできます。
プラグインモード
インストール
pnpm add @univerjs-pro/sheets-printnpm install @univerjs-pro/sheets-printyarn add @univerjs-pro/sheets-printbun add @univerjs-pro/sheets-print使い方
import { UniverSheetsPrintPlugin } from '@univerjs-pro/sheets-print'import SheetsPrintPluginJaJP from '@univerjs-pro/sheets-print/locale/ja-JP'import { LocaleType, mergeLocales, Univer } from '@univerjs/core'import '@univerjs-pro/sheets-print/lib/index.css'const univer = new Univer({ locale: LocaleType.JA_JP, locales: { [LocaleType.JA_JP]: mergeLocales( SheetsPrintPluginJaJP, ), },})univer.registerPlugin(UniverSheetsPrintPlugin)Univer の商用ライセンスをお持ちの場合は、設定方法について クライアントでのライセンス を参照してください。
プラグインと設定
interface IUniverSheetsPrintConfig { /** * 印刷時にウォーターマークを強制的に表示するかどうか * @default false */ enforceWatermark?: boolean}モバイル対応
まずモバイルエディターを設定します。このページのプラグインモードの初期化コードで、以下のデスクトップ登録を同じパッケージのモバイル版に置き換え、文書を開く前に完了してください。モデル、スタイル、言語ファイル、Facade は維持し、両方を同時に登録しないでください。
| パッケージ | デスクトップの登録 | モバイルの登録 |
|---|---|---|
@univerjs-pro/sheets-print | UniverSheetsPrintPlugin | UniverSheetsPrintMobileUIPlugin |
プリセットモード
印刷機能は @univerjs/preset-sheets-advanced のプリセットに含まれています。
インストール
@univerjs/preset-sheets-advanced の UniverSheetsAdvancedPreset は、実行時に UniverSheetsDrawingPreset
に依存します。先に @univerjs/preset-sheets-drawing をインストールしてください。
pnpm add @univerjs/preset-sheets-drawing @univerjs/preset-sheets-advancednpm install @univerjs/preset-sheets-drawing @univerjs/preset-sheets-advancedyarn add @univerjs/preset-sheets-drawing @univerjs/preset-sheets-advancedbun add @univerjs/preset-sheets-drawing @univerjs/preset-sheets-advanced使い方
import { UniverSheetsAdvancedPreset } from '@univerjs/preset-sheets-advanced'import UniverPresetSheetsAdvancedJaJP from '@univerjs/preset-sheets-advanced/locales/ja-JP'import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'import UniverPresetSheetsCoreJaJP from '@univerjs/preset-sheets-core/locales/ja-JP'import { UniverSheetsDrawingPreset } from '@univerjs/preset-sheets-drawing'import UniverPresetSheetsDrawingJaJP from '@univerjs/preset-sheets-drawing/locales/ja-JP'import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'import '@univerjs/preset-sheets-core/lib/index.css'import '@univerjs/preset-sheets-drawing/lib/index.css'import '@univerjs/preset-sheets-advanced/lib/index.css'const { univerAPI } = createUniver({ locale: LocaleType.JA_JP, locales: { [LocaleType.JA_JP]: mergeLocales( UniverPresetSheetsCoreJaJP, UniverPresetSheetsDrawingJaJP, UniverPresetSheetsAdvancedJaJP, ), }, presets: [ UniverSheetsCorePreset(), UniverSheetsDrawingPreset(), UniverSheetsAdvancedPreset(), ],})Univer の商用ライセンスをお持ちの場合は、設定方法について クライアントでのライセンス を参照してください。
プリセットと設定
interface IUniverSheetsAdvancedPresetConfig { print?: Partial<IUniverSheetsPrintConfig>}interface IUniverSheetsPrintConfig { /** * 印刷時にウォーターマークを強制的に表示するかどうか * @default false */ enforceWatermark?: boolean}Facade API
インポート
プラグインモード注意
Facade パッケージの手動 import が必要なのはプラグインモードのみです。プリセットモードには対応する Facade パッケージが内蔵されているため、追加の import は不要です。
import '@univerjs-pro/sheets-print/facade'印刷設定ダイアログを開く
FWorkbook.openPrintDialog を使用すると、印刷設定ダイアログを開けます。
const fWorkbook = univerAPI.getActiveWorkbook()fWorkbook.openPrintDialog()印刷設定ダイアログを閉じる
FWorkbook.closePrintDialog メソッドを使用すると、印刷設定ダイアログを閉じられます。
const fWorkbook = univerAPI.getActiveWorkbook()fWorkbook.openPrintDialog()// 3 秒後に印刷設定ダイアログを閉じるsetTimeout(() => { fWorkbook.closePrintDialog()}, 3000)印刷レイアウト設定の更新
FWorkbook.updatePrintConfig(config: ISheetPrintLayoutConfig) メソッドを使用して、印刷レイアウト設定を更新します。
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()const subUnitId = fWorksheet.getSheetId()// 印刷レイアウト設定を更新fWorkbook.updatePrintConfig({ area: univerAPI.Enum.PrintArea.CurrentSheet, // 現在のシートを印刷 subUnitIds: [subUnitId], paperSize: univerAPI.Enum.PrintPaperSize.A4, // A4 用紙サイズ scale: univerAPI.Enum.PrintScale.FitPage, // コンテンツをページに合わせる freeze: [univerAPI.Enum.PrintFreeze.Row], // 行ヘッダーを固定 margin: univerAPI.Enum.PrintPaperMargin.Normal, // 標準の余白 // ... その他の設定})// 更新した設定で印刷を開始fWorkbook.print()完全な設定型とパラメーターは次を参照してください: FWorkbook.updatePrintConfig().
印刷レンダー設定の更新
FWorkbook.updatePrintRenderConfig(config: ISheetPrintRenderConfig) メソッドを使用して、印刷レンダー設定を更新します。
const fWorkbook = univerAPI.getActiveWorkbook()// 既定では印刷レイアウト設定を更新fWorkbook.updatePrintConfig({})// 印刷レンダー設定を更新fWorkbook.updatePrintRenderConfig({gridlines: true, // 罫線を表示hAlign: univerAPI.Enum.PrintAlign.Middle, // 水平方向中央揃えvAlign: univerAPI.Enum.PrintAlign.Middle, // 垂直方向中央揃えheaderFooter: [ // 含めるヘッダー/フッター要素の配列。ここではページ番号とワークシート名 univerAPI.Enum.PrintHeaderFooter.PageSize, univerAPI.Enum.PrintHeaderFooter.WorksheetTitle,],// ... その他の設定})// 印刷を開始fWorkbook.print()完全な設定型とパラメーターは次を参照してください: FWorkbook.updatePrintRenderConfig().
印刷
FWorkbook.print メソッドを使用すると、印刷ダイアログを直接トリガーできます。
// 既定の設定を使う場合は空のオブジェクトを渡せますworkbook.updatePrintConfig({// ... 印刷レイアウト設定})workbook.updatePrintRenderConfig({// ... 印刷レンダー設定})workbook.print()スクリーンショットをクリップボードに保存
FWorkbook.saveScreenshotToClipboard メソッドを使用すると、印刷データの画像をクリップボードに保存できます。
ライセンス をお持ちの方のみ利用可能です。ライセンスがない場合は使用制限があり、保存処理は false を返します。
画像の保存には Clipboard API を使用しており、非セキュアなネットワーク環境や未対応のブラウザーでは失敗する場合があります。保存に成功すると true を返します。
const fWorkbook = univerAPI.getActiveWorkbook()const result = await fWorkbook.saveScreenshotToClipboard()選択範囲のスクリーンショットを取得
FRange.getScreenshot メソッドを使用すると、選択した印刷データのスクリーンショットを取得できます。
ライセンス をお持ちの方のみ利用可能です。ライセンスがない場合は使用制限があり、失敗時は false を返し、成功時は画像の base64 文字列を返します。
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()const fRange = fWorksheet.getRange('A1:D10')fRange.getScreenshot()fRange.getScreenshot({ includeHeaders: true }) // 行列ヘッダーを含むイベント リスナー
印刷機能では、次のイベントが利用できます。
univerAPI.Event.BeforeSheetPrintOpen イベントは、印刷設定ダイアログが開かれる前にトリガーされます。
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetPrintOpen, (params) => { const { workbook, worksheet } = params // 印刷設定ダイアログを開く操作をキャンセルする params.cancel = true})// イベント リスナーを削除するには `disposable.dispose()` を使用します。univerAPI.Event.SheetPrintOpen イベントは、印刷設定ダイアログが開かれた後にトリガーされます。
const disposable = univerAPI.addEvent(univerAPI.Event.SheetPrintOpen, (params) => { const { workbook, worksheet } = params})// イベント リスナーを削除するには `disposable.dispose()` を使用します。univerAPI.Event.BeforeSheetPrintConfirm イベントは、印刷の確認ダイアログが開かれる前にトリガーされます。
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetPrintConfirm, (params) => { const { renderConfig, layoutConfig } = params // 印刷の確認操作をキャンセルする params.cancel = true})// イベント リスナーを削除するには `disposable.dispose()` を使用します。univerAPI.Event.SheetPrintConfirmed イベントは、印刷の確認ダイアログが開かれた後にトリガーされます。
const disposable = univerAPI.addEvent(univerAPI.Event.SheetPrintConfirmed, (params) => { const { renderConfig, layoutConfig } = params})// イベント リスナーを削除するには `disposable.dispose()` を使用します。univerAPI.Event.BeforeSheetPrintCanceled イベントは、印刷のキャンセル操作の前にトリガーされます。
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetPrintCanceled, (params) => { const { renderConfig, layoutConfig } = params // 印刷のキャンセル操作をキャンセルする params.cancel = true})// イベント リスナーを削除するには `disposable.dispose()` を使用します。univerAPI.Event.SheetPrintCanceled イベントは、印刷のキャンセル操作の後にトリガーされます。
const disposable = univerAPI.addEvent(univerAPI.Event.SheetPrintCanceled, (params) => { const { renderConfig, layoutConfig } = params})// イベント リスナーを削除するには `disposable.dispose()` を使用します。このガイドはいかがですか?