Печать
Функция печати позволяет выводить содержимое электронной таблицы на бумагу или экспортировать его в PDF для просмотра без подключения к интернету и совместного использования.
Режим пресетов
Функция печати входит в пресет @univerjs/preset-sheets-advanced.
Установка
Во время выполнения пресету UniverSheetsAdvancedPreset из @univerjs/preset-sheets-advanced требуется пресет
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 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, инструкции по настройке см. в разделе Использование лицензии на клиенте.
Пресеты и конфигурация
interface IUniverSheetsAdvancedPresetConfig { print?: Partial<IUniverSheetsPrintConfig>}interface IUniverSheetsPrintConfig { /** * Whether to force the watermark to be displayed when printing * @default false */ enforceWatermark?: boolean}Режим плагинов
Установка
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 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, инструкции по настройке см. в разделе Использование лицензии на клиенте.
Плагины и конфигурация
interface IUniverSheetsPrintConfig { /** * Whether to force the watermark to be displayed when printing * @default false */ enforceWatermark?: boolean}Поддержка мобильных устройств
Сначала настройте мобильный редактор. В коде инициализации режима плагинов на этой странице замените указанные настольные регистрации мобильными экспортами тех же пакетов до открытия документа. Сохраните модели, стили, локализации и импорты Facade; не регистрируйте оба варианта.
| Пакет | Настольная регистрация | Мобильная регистрация |
|---|---|---|
@univerjs-pro/sheets-print | UniverSheetsPrintPlugin | UniverSheetsPrintMobileUIPlugin |
Facade API
Импорт
Примечание о режиме плагинов
Импортировать пакет Facade вручную нужно только в режиме плагинов. В режиме пресетов соответствующий пакет Facade уже включён, поэтому дополнительный импорт не требуется.
import '@univerjs-pro/sheets-print/facade'Открытие диалогового окна настройки печати
Метод FWorkbook.openPrintDialog открывает диалоговое окно настройки печати.
const fWorkbook = univerAPI.getActiveWorkbook()fWorkbook.openPrintDialog()Закрытие диалогового окна настройки печати
Метод FWorkbook.closePrintDialog закрывает диалоговое окно настройки печати.
const fWorkbook = univerAPI.getActiveWorkbook()fWorkbook.openPrintDialog()// Close the print configuration dialog after 3 secondssetTimeout(() => { fWorkbook.closePrintDialog()}, 3000)Обновление конфигурации макета печати
Метод FWorkbook.updatePrintConfig(config: ISheetPrintLayoutConfig) обновляет конфигурацию макета печати.
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) обновляет конфигурацию рендеринга печати.
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 позволяет напрямую открыть диалоговое окно печати.
// 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.
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 }) // Include row and column headersОбработчики событий
Для функции печати доступны следующие события:
Событие univerAPI.Event.BeforeSheetPrintOpen срабатывает перед открытием диалогового окна настройки печати.
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 срабатывает после открытия диалогового окна настройки печати.
const disposable = univerAPI.addEvent(univerAPI.Event.SheetPrintOpen, (params) => { const { workbook, worksheet } = params})// Remove the event listener, use `disposable.dispose()`.Событие univerAPI.Event.BeforeSheetPrintConfirm срабатывает перед открытием диалогового окна подтверждения печати.
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 срабатывает после открытия диалогового окна подтверждения печати.
const disposable = univerAPI.addEvent(univerAPI.Event.SheetPrintConfirmed, (params) => { const { renderConfig, layoutConfig } = params})// Remove the event listener, use `disposable.dispose()`.Событие univerAPI.Event.BeforeSheetPrintCanceled срабатывает перед отменой печати.
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 срабатывает после отмены печати.
const disposable = univerAPI.addEvent(univerAPI.Event.SheetPrintCanceled, (params) => { const { renderConfig, layoutConfig } = params})// Remove the event listener, use `disposable.dispose()`.Насколько полезно это руководство?