인쇄

인쇄 기능을 사용하면 스프레드시트 내용을 종이 문서로 인쇄하거나 PDF 형식으로 내보내 오프라인에서 확인하고 공유할 수 있습니다.

플러그인 모드

설치

Shell
pnpm add @univerjs-pro/sheets-print

사용법

TypeScript
import { UniverSheetsPrintPlugin } from '@univerjs-pro/sheets-print'import SheetsPrintPluginEnUS from '@univerjs-pro/sheets-print/locale/en-US'import { LocaleType, mergeLocales, Univer } from '@univerjs/core'import '@univerjs-pro/sheets-print/lib/index.css'const univer = new Univer({  locale: LocaleType.EN_US,  locales: {    [LocaleType.EN_US]: mergeLocales(      SheetsPrintPluginEnUS,     ),  },})univer.registerPlugin(UniverSheetsPrintPlugin)

Univer 상용 라이선스가 있다면 클라이언트에서 라이선스 사용하기를 참고하여 설정하세요.

플러그인 및 구성

TypeScript
interface IUniverSheetsPrintConfig {  /**   * Whether to force the watermark to be displayed when printing   * @default false   */  enforceWatermark?: boolean}

모바일 지원

먼저 모바일 에디터를 구성하세요. 이 페이지의 플러그인 모드 초기화 코드에서 아래 데스크톱 등록을 같은 패키지의 모바일 버전으로 바꾸고 문서를 열기 전에 완료하세요. 모델 플러그인, 스타일, 언어 파일과 Facade 가져오기는 유지하며 두 버전을 동시에 등록하지 마세요.

패키지데스크톱 등록모바일 등록
@univerjs-pro/sheets-printUniverSheetsPrintPluginUniverSheetsPrintMobileUIPlugin

프리셋 모드

인쇄 기능은 @univerjs/preset-sheets-advanced 프리셋에 포함되어 있습니다.

설치

@univerjs/preset-sheets-advanced의 UniverSheetsAdvancedPreset 프리셋은 런타임에 UniverSheetsDrawingPreset 프리셋을 사용합니다. 먼저 @univerjs/preset-sheets-drawing을 설치하세요.

Shell
pnpm add @univerjs/preset-sheets-drawing @univerjs/preset-sheets-advanced

사용법

TypeScript
import { UniverSheetsAdvancedPreset } from '@univerjs/preset-sheets-advanced'import UniverPresetSheetsAdvancedEnUS from '@univerjs/preset-sheets-advanced/locales/en-US'import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'import UniverPresetSheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US'import { UniverSheetsDrawingPreset } from '@univerjs/preset-sheets-drawing'import UniverPresetSheetsDrawingEnUS from '@univerjs/preset-sheets-drawing/locales/en-US'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.EN_US,  locales: {    [LocaleType.EN_US]: mergeLocales(      UniverPresetSheetsCoreEnUS,      UniverPresetSheetsDrawingEnUS,       UniverPresetSheetsAdvancedEnUS,     ),  },  presets: [    UniverSheetsCorePreset(),    UniverSheetsDrawingPreset(),     UniverSheetsAdvancedPreset(),   ],})

Univer 상용 라이선스가 있다면 클라이언트에서 라이선스 사용하기를 참고하여 설정하세요.

프리셋 및 구성

TypeScript
interface IUniverSheetsAdvancedPresetConfig {  print?: Partial<IUniverSheetsPrintConfig>}interface IUniverSheetsPrintConfig {  /**   * Whether to force the watermark to be displayed when printing   * @default false   */  enforceWatermark?: boolean}

Facade API

가져오기

플러그인 모드 참고 사항

Facade 패키지를 직접 가져와야 하는 것은 플러그인 모드뿐입니다. 프리셋 모드에는 해당 Facade 패키지가 이미 포함되어 있으므로 별도로 가져올 필요가 없습니다.

TypeScript
import '@univerjs-pro/sheets-print/facade'

인쇄 구성 대화 상자 열기

FWorkbook.openPrintDialog를 사용하면 인쇄 구성 대화 상자를 열 수 있습니다.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()fWorkbook.openPrintDialog()

인쇄 구성 대화 상자 닫기

FWorkbook.closePrintDialog 메서드를 사용하면 인쇄 구성 대화 상자를 닫을 수 있습니다.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()fWorkbook.openPrintDialog()// Close the print configuration dialog after 3 secondssetTimeout(() => {  fWorkbook.closePrintDialog()}, 3000)

인쇄 레이아웃 구성 업데이트

FWorkbook.updatePrintConfig(config: ISheetPrintLayoutConfig) 메서드로 인쇄 레이아웃 구성을 업데이트합니다.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()const subUnitId = fWorksheet.getSheetId()// Update print layout configfWorkbook.updatePrintConfig({  area: univerAPI.Enum.PrintArea.CurrentSheet, // print current sheet  subUnitIds: [subUnitId],  paperSize: univerAPI.Enum.PrintPaperSize.A4, // A4 paper size  scale: univerAPI.Enum.PrintScale.FitPage, // fit content to page  freeze: [univerAPI.Enum.PrintFreeze.Row], // freeze row headers  margin: univerAPI.Enum.PrintPaperMargin.Normal, // normal margin  // ... other settings})// Start printing with the updated configurationfWorkbook.print()

전체 구성 타입과 매개변수는 다음을 참고하세요: FWorkbook.updatePrintConfig().

인쇄 렌더링 구성 업데이트

FWorkbook.updatePrintRenderConfig(config: ISheetPrintRenderConfig) 메서드로 인쇄 렌더링 구성을 업데이트합니다.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()// Update print layout config by defaultfWorkbook.updatePrintConfig({})// Update print render configfWorkbook.updatePrintRenderConfig({gridlines: true, // show gridlineshAlign: univerAPI.Enum.PrintAlign.Middle, // horizontal align middlevAlign: univerAPI.Enum.PrintAlign.Middle, // vertical align middleheaderFooter: [ // the array of header and footer elements to include, here is page numbers and worksheet name  univerAPI.Enum.PrintHeaderFooter.PageSize,  univerAPI.Enum.PrintHeaderFooter.WorksheetTitle,],// ... other settings})// Start printfWorkbook.print()

전체 구성 타입과 매개변수는 다음을 참고하세요: FWorkbook.updatePrintRenderConfig().

인쇄

FWorkbook.print 메서드를 사용하면 인쇄 대화 상자를 바로 열 수 있습니다.

TypeScript
// Using the default configuration you can pass in an empty objectworkbook.updatePrintConfig({// ... Print layout configuration})workbook.updatePrintRenderConfig({// ... Print render configuration})workbook.print()

스크린샷을 클립보드에 저장

FWorkbook.saveScreenshotToClipboard 메서드를 사용하면 인쇄 데이터 이미지를 클립보드에 저장할 수 있습니다.

이 기능은 라이선스가 있어야 사용할 수 있습니다. 라이선스가 없는 사용자는 이용에 제한을 받으며 저장 작업은 false를 반환합니다.

Clipboard API를 사용하여 이미지를 클립보드에 저장하므로 보안되지 않은 네트워크 환경이나 지원되지 않는 브라우저에서는 실패할 수 있습니다. 저장에 성공하면 true를 반환합니다.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const result = await fWorkbook.saveScreenshotToClipboard()

선택 범위의 스크린샷 가져오기

FRange.getScreenshot 메서드를 사용하면 선택한 인쇄 데이터의 스크린샷을 가져올 수 있습니다.

이 기능은 라이선스가 있어야 사용할 수 있습니다. 라이선스가 없는 사용자는 이용에 제한을 받으며 작업에 실패하면 false, 성공하면 이미지의 base64 문자열을 반환합니다.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()const fRange = fWorksheet.getRange('A1:D10')fRange.getScreenshot()fRange.getScreenshot({ includeHeaders: true }) // Include row and column headers

이벤트 리스너

인쇄 기능에서 사용할 수 있는 이벤트는 다음과 같습니다.

univerAPI.Event.BeforeSheetPrintOpen 이벤트는 인쇄 구성 대화 상자가 열리기 전에 발생합니다.

TypeScript
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetPrintOpen, (params) => {  const { workbook, worksheet } = params  // Cancel open print configuration dialog operation  params.cancel = true})// Remove the event listener, use `disposable.dispose()`.

univerAPI.Event.SheetPrintOpen 이벤트는 인쇄 구성 대화 상자가 열린 후에 발생합니다.

TypeScript
const disposable = univerAPI.addEvent(univerAPI.Event.SheetPrintOpen, (params) => {  const { workbook, worksheet } = params})// Remove the event listener, use `disposable.dispose()`.

univerAPI.Event.BeforeSheetPrintConfirm 이벤트는 인쇄 확인 대화 상자가 열리기 전에 발생합니다.

TypeScript
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetPrintConfirm, (params) => {  const { renderConfig, layoutConfig } = params  // Cancel the print confirmation operation  params.cancel = true})// Remove the event listener, use `disposable.dispose()`.

univerAPI.Event.SheetPrintConfirmed 이벤트는 인쇄 확인 대화 상자가 열린 후에 발생합니다.

TypeScript
const disposable = univerAPI.addEvent(univerAPI.Event.SheetPrintConfirmed, (params) => {  const { renderConfig, layoutConfig } = params})// Remove the event listener, use `disposable.dispose()`.

univerAPI.Event.BeforeSheetPrintCanceled 이벤트는 인쇄 취소 작업 전에 발생합니다.

TypeScript
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetPrintCanceled, (params) => {  const { renderConfig, layoutConfig } = params  // Cancel the print cancel operation  params.cancel = true})// Remove the event listener, use `disposable.dispose()`.

univerAPI.Event.SheetPrintCanceled 이벤트는 인쇄 취소 작업 후에 발생합니다.

TypeScript
const disposable = univerAPI.addEvent(univerAPI.Event.SheetPrintCanceled, (params) => {  const { renderConfig, layoutConfig } = params})// Remove the event listener, use `disposable.dispose()`.

이 가이드는 어떠셨나요?

© 2026 DreamNum Co., Ltd.