@univerjs-pro/pdfs-ui 1.0.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/README.md +46 -0
  2. package/lib/cjs/index.js +1 -0
  3. package/lib/cjs/locale/ar-SA.js +1 -0
  4. package/lib/cjs/locale/ca-ES.js +1 -0
  5. package/lib/cjs/locale/de-DE.js +1 -0
  6. package/lib/cjs/locale/en-US.js +1 -0
  7. package/lib/cjs/locale/es-ES.js +1 -0
  8. package/lib/cjs/locale/fa-IR.js +1 -0
  9. package/lib/cjs/locale/fr-FR.js +1 -0
  10. package/lib/cjs/locale/id-ID.js +1 -0
  11. package/lib/cjs/locale/it-IT.js +1 -0
  12. package/lib/cjs/locale/ja-JP.js +1 -0
  13. package/lib/cjs/locale/ko-KR.js +1 -0
  14. package/lib/cjs/locale/pl-PL.js +1 -0
  15. package/lib/cjs/locale/pt-BR.js +1 -0
  16. package/lib/cjs/locale/ru-RU.js +1 -0
  17. package/lib/cjs/locale/sk-SK.js +1 -0
  18. package/lib/cjs/locale/vi-VN.js +1 -0
  19. package/lib/cjs/locale/zh-CN.js +1 -0
  20. package/lib/cjs/locale/zh-HK.js +1 -0
  21. package/lib/cjs/locale/zh-TW.js +1 -0
  22. package/lib/es/index.js +1 -0
  23. package/lib/es/locale/ar-SA.js +1 -0
  24. package/lib/es/locale/ca-ES.js +1 -0
  25. package/lib/es/locale/de-DE.js +1 -0
  26. package/lib/es/locale/en-US.js +1 -0
  27. package/lib/es/locale/es-ES.js +1 -0
  28. package/lib/es/locale/fa-IR.js +1 -0
  29. package/lib/es/locale/fr-FR.js +1 -0
  30. package/lib/es/locale/id-ID.js +1 -0
  31. package/lib/es/locale/it-IT.js +1 -0
  32. package/lib/es/locale/ja-JP.js +1 -0
  33. package/lib/es/locale/ko-KR.js +1 -0
  34. package/lib/es/locale/pl-PL.js +1 -0
  35. package/lib/es/locale/pt-BR.js +1 -0
  36. package/lib/es/locale/ru-RU.js +1 -0
  37. package/lib/es/locale/sk-SK.js +1 -0
  38. package/lib/es/locale/vi-VN.js +1 -0
  39. package/lib/es/locale/zh-CN.js +1 -0
  40. package/lib/es/locale/zh-HK.js +1 -0
  41. package/lib/es/locale/zh-TW.js +1 -0
  42. package/lib/index.css +520 -0
  43. package/lib/index.js +1 -0
  44. package/lib/locale/ar-SA.js +1 -0
  45. package/lib/locale/ca-ES.js +1 -0
  46. package/lib/locale/de-DE.js +1 -0
  47. package/lib/locale/en-US.js +1 -0
  48. package/lib/locale/es-ES.js +1 -0
  49. package/lib/locale/fa-IR.js +1 -0
  50. package/lib/locale/fr-FR.js +1 -0
  51. package/lib/locale/id-ID.js +1 -0
  52. package/lib/locale/it-IT.js +1 -0
  53. package/lib/locale/ja-JP.js +1 -0
  54. package/lib/locale/ko-KR.js +1 -0
  55. package/lib/locale/pl-PL.js +1 -0
  56. package/lib/locale/pt-BR.js +1 -0
  57. package/lib/locale/ru-RU.js +1 -0
  58. package/lib/locale/sk-SK.js +1 -0
  59. package/lib/locale/vi-VN.js +1 -0
  60. package/lib/locale/zh-CN.js +1 -0
  61. package/lib/locale/zh-HK.js +1 -0
  62. package/lib/locale/zh-TW.js +1 -0
  63. package/lib/types/commands/command-ids.d.ts +1 -0
  64. package/lib/types/commands/mutations/pdf-history.mutation.d.ts +9 -0
  65. package/lib/types/commands/operations/pdf-editor.operation.d.ts +22 -0
  66. package/lib/types/commands/operations/pdf-insert.operation.d.ts +17 -0
  67. package/lib/types/commands/operations/pdf-page-thumbnail.operation.d.ts +7 -0
  68. package/lib/types/config/config.d.ts +13 -0
  69. package/lib/types/context-menu/pdf-context-menu-position.d.ts +5 -0
  70. package/lib/types/controllers/components.controller.d.ts +9 -0
  71. package/lib/types/controllers/pdf-editor-unit.controller.d.ts +15 -0
  72. package/lib/types/controllers/pdf-inspector.controller.d.ts +12 -0
  73. package/lib/types/controllers/pdf-page-thumbnail-contextmenu.controller.d.ts +8 -0
  74. package/lib/types/controllers/pdf-ribbon.controller.d.ts +6 -0
  75. package/lib/types/controllers/pdf-ui.controller.d.ts +9 -0
  76. package/lib/types/editor/TextColorPicker.d.ts +11 -0
  77. package/lib/types/editor/canvas-text-edit-bridge.d.ts +23 -0
  78. package/lib/types/editor/canvas-text-editor.d.ts +69 -0
  79. package/lib/types/editor/chrome-model.d.ts +61 -0
  80. package/lib/types/editor/context-menu-model.d.ts +17 -0
  81. package/lib/types/editor/form-field-targets.d.ts +8 -0
  82. package/lib/types/editor/form-field-values.d.ts +16 -0
  83. package/lib/types/editor/geometry.d.ts +18 -0
  84. package/lib/types/editor/inspector-geometry.d.ts +13 -0
  85. package/lib/types/editor/inspector-model.d.ts +75 -0
  86. package/lib/types/editor/keyboard-controller.d.ts +32 -0
  87. package/lib/types/editor/list-layout.d.ts +21 -0
  88. package/lib/types/editor/managed-image-insert.d.ts +41 -0
  89. package/lib/types/editor/native-targets.d.ts +32 -0
  90. package/lib/types/editor/native-text-edit.d.ts +9 -0
  91. package/lib/types/editor/overlay-renderer.d.ts +63 -0
  92. package/lib/types/editor/paragraph-autofit.d.ts +31 -0
  93. package/lib/types/editor/pointer-controller.d.ts +76 -0
  94. package/lib/types/editor/pointer-frame-coalescer.d.ts +11 -0
  95. package/lib/types/editor/story-layout.d.ts +100 -0
  96. package/lib/types/editor/table-insertion.d.ts +17 -0
  97. package/lib/types/editor/table-layout.d.ts +32 -0
  98. package/lib/types/editor/table-renderer.d.ts +6 -0
  99. package/lib/types/editor/text-layout.d.ts +74 -0
  100. package/lib/types/index.d.ts +15 -0
  101. package/lib/types/locale/ar-SA.d.ts +3 -0
  102. package/lib/types/locale/ca-ES.d.ts +3 -0
  103. package/lib/types/locale/de-DE.d.ts +3 -0
  104. package/lib/types/locale/en-US.d.ts +212 -0
  105. package/lib/types/locale/es-ES.d.ts +3 -0
  106. package/lib/types/locale/fa-IR.d.ts +3 -0
  107. package/lib/types/locale/fr-FR.d.ts +3 -0
  108. package/lib/types/locale/id-ID.d.ts +3 -0
  109. package/lib/types/locale/it-IT.d.ts +3 -0
  110. package/lib/types/locale/ja-JP.d.ts +3 -0
  111. package/lib/types/locale/ko-KR.d.ts +3 -0
  112. package/lib/types/locale/pl-PL.d.ts +3 -0
  113. package/lib/types/locale/pt-BR.d.ts +3 -0
  114. package/lib/types/locale/ru-RU.d.ts +3 -0
  115. package/lib/types/locale/sk-SK.d.ts +3 -0
  116. package/lib/types/locale/types.d.ts +3 -0
  117. package/lib/types/locale/vi-VN.d.ts +3 -0
  118. package/lib/types/locale/zh-CN.d.ts +3 -0
  119. package/lib/types/locale/zh-HK.d.ts +3 -0
  120. package/lib/types/locale/zh-TW.d.ts +3 -0
  121. package/lib/types/menu/pdf-canvas-contextmenu.menu.d.ts +9 -0
  122. package/lib/types/menu/pdf-page-thumbnail.menu.d.ts +7 -0
  123. package/lib/types/menu/pdf-ribbon.menu.d.ts +27 -0
  124. package/lib/types/menu/schema.d.ts +4 -0
  125. package/lib/types/plugin.d.ts +19 -0
  126. package/lib/types/render/canvas-backend.d.ts +29 -0
  127. package/lib/types/render/canvas-group-compositor.d.ts +54 -0
  128. package/lib/types/render/canvas-renderer.d.ts +29 -0
  129. package/lib/types/render/canvas-shading.d.ts +12 -0
  130. package/lib/types/render/canvas-text.d.ts +15 -0
  131. package/lib/types/render/canvas-types.d.ts +3 -0
  132. package/lib/types/render/decode-manifest.d.ts +210 -0
  133. package/lib/types/render/document-json.d.ts +3 -0
  134. package/lib/types/render/document-object-renderer.d.ts +21 -0
  135. package/lib/types/render/font-outline.d.ts +27 -0
  136. package/lib/types/render/font-render-report.d.ts +71 -0
  137. package/lib/types/render/image-resolver.d.ts +30 -0
  138. package/lib/types/render/pdf-canvas-render-session.d.ts +34 -0
  139. package/lib/types/render/pdf-page-thumbnail-renderer.d.ts +49 -0
  140. package/lib/types/render/pdf-page-thumbnail-worker-client.d.ts +44 -0
  141. package/lib/types/render/pdf-page-thumbnail.worker.d.ts +9 -0
  142. package/lib/types/render/source-eraser.d.ts +18 -0
  143. package/lib/types/render/source-suppression.d.ts +10 -0
  144. package/lib/types/render/viewport.d.ts +21 -0
  145. package/lib/types/services/pdf-editor-command.service.d.ts +59 -0
  146. package/lib/types/services/pdf-editor-runtime.service.d.ts +62 -0
  147. package/lib/types/services/pdf-insert.service.d.ts +58 -0
  148. package/lib/types/services/pdf-managed-image-runtime.adapter.d.ts +37 -0
  149. package/lib/types/services/pdf-page-region-index.service.d.ts +48 -0
  150. package/lib/types/services/pdf-page-thumbnail-action.service.d.ts +15 -0
  151. package/lib/types/services/pdf-page-thumbnail-context.service.d.ts +36 -0
  152. package/lib/types/services/pdf-page-thumbnail-unit-action.service.d.ts +18 -0
  153. package/lib/types/services/pdf-render-resource-resolvers.d.ts +6 -0
  154. package/lib/types/views/PdfCanvasView.d.ts +2 -0
  155. package/lib/types/views/PdfFooter.d.ts +2 -0
  156. package/lib/types/views/PdfInsertTableMenu.d.ts +2 -0
  157. package/lib/types/views/PdfInspectorPanel.d.ts +3 -0
  158. package/lib/types/views/PdfPageThumbnailBar.d.ts +2 -0
  159. package/lib/types/views/PdfTableThemeGallery.d.ts +8 -0
  160. package/lib/types/views/PdfToolbar.d.ts +2 -0
  161. package/lib/types/views/pdf-canvas-pixel-alignment.d.ts +1 -0
  162. package/lib/types/views/pdf-canvas-text-edit-state.d.ts +34 -0
  163. package/lib/types/views/pdf-thumbnail-virtualizer.d.ts +22 -0
  164. package/lib/types/views/pdf-workbench-state.d.ts +8 -0
  165. package/lib/umd/index.js +1 -0
  166. package/lib/umd/locale/ar-SA.js +1 -0
  167. package/lib/umd/locale/ca-ES.js +1 -0
  168. package/lib/umd/locale/de-DE.js +1 -0
  169. package/lib/umd/locale/en-US.js +1 -0
  170. package/lib/umd/locale/es-ES.js +1 -0
  171. package/lib/umd/locale/fa-IR.js +1 -0
  172. package/lib/umd/locale/fr-FR.js +1 -0
  173. package/lib/umd/locale/id-ID.js +1 -0
  174. package/lib/umd/locale/it-IT.js +1 -0
  175. package/lib/umd/locale/ja-JP.js +1 -0
  176. package/lib/umd/locale/ko-KR.js +1 -0
  177. package/lib/umd/locale/pl-PL.js +1 -0
  178. package/lib/umd/locale/pt-BR.js +1 -0
  179. package/lib/umd/locale/ru-RU.js +1 -0
  180. package/lib/umd/locale/sk-SK.js +1 -0
  181. package/lib/umd/locale/vi-VN.js +1 -0
  182. package/lib/umd/locale/zh-CN.js +1 -0
  183. package/lib/umd/locale/zh-HK.js +1 -0
  184. package/lib/umd/locale/zh-TW.js +1 -0
  185. package/package.json +87 -0
@@ -0,0 +1,3 @@
1
+ import type enUS from './en-US';
2
+ declare const locale: typeof enUS;
3
+ export default locale;
@@ -0,0 +1,3 @@
1
+ import type enUS from './en-US';
2
+ declare const locale: typeof enUS;
3
+ export default locale;
@@ -0,0 +1,9 @@
1
+ import type { IMenuButtonItem } from '@univerjs/ui';
2
+ import type { LocaleKey } from '../locale/types';
3
+ export declare function PdfCanvasAddTextMenuFactory(): IMenuButtonItem<LocaleKey>;
4
+ export declare function PdfCanvasEditTextMenuFactory(): IMenuButtonItem<LocaleKey>;
5
+ export declare function PdfCanvasFlipHorizontalMenuFactory(): IMenuButtonItem<LocaleKey>;
6
+ export declare function PdfCanvasFlipVerticalMenuFactory(): IMenuButtonItem<LocaleKey>;
7
+ export declare function PdfCanvasBringForwardMenuFactory(): IMenuButtonItem<LocaleKey>;
8
+ export declare function PdfCanvasSendBackwardMenuFactory(): IMenuButtonItem<LocaleKey>;
9
+ export declare function PdfCanvasDeleteMenuFactory(): IMenuButtonItem<LocaleKey>;
@@ -0,0 +1,7 @@
1
+ import type { IAccessor } from '@univerjs/core';
2
+ import type { IMenuButtonItem } from '@univerjs/ui';
3
+ export declare const PdfMovePageUpMenuFactory: (accessor: IAccessor) => IMenuButtonItem<string>;
4
+ export declare const PdfMovePageDownMenuFactory: (accessor: IAccessor) => IMenuButtonItem<string>;
5
+ export declare const PdfCopyPageMenuFactory: (accessor: IAccessor) => IMenuButtonItem<string>;
6
+ export declare const PdfRotatePageClockwiseMenuFactory: (accessor: IAccessor) => IMenuButtonItem<string>;
7
+ export declare const PdfDeletePageMenuFactory: (accessor: IAccessor) => IMenuButtonItem<string>;
@@ -0,0 +1,27 @@
1
+ import type { IAccessor } from '@univerjs/core';
2
+ import type { IMenuButtonItem, IMenuSelectorItem } from '@univerjs/ui';
3
+ import type { LocaleKey } from '../locale/types';
4
+ import { PdfListPresetId } from '@univerjs-pro/pdfs';
5
+ export declare const PDF_INSERT_TEXT_BOX_MENU_ID = "pdf.menu.insert.text-box";
6
+ export declare const PDF_INSERT_PARAGRAPH_MENU_ID = "pdf.menu.insert.paragraph";
7
+ export declare const PDF_INSERT_IMAGE_MENU_ID = "pdf.menu.insert.image";
8
+ export declare const PDF_INSERT_DIVIDER_MENU_ID = "pdf.menu.insert.divider";
9
+ export declare const PDF_INSERT_TABLE_MENU_ID = "pdf.menu.insert.table";
10
+ export declare const PDF_INSERT_LIST_MENU_ID = "pdf.menu.insert.list";
11
+ export declare const PDF_INSERT_TABLE_MENU_COMPONENT = "pdf.insert-ribbon.table";
12
+ export declare function PdfUndoMenuFactory(): IMenuButtonItem<LocaleKey>;
13
+ export declare function PdfRedoMenuFactory(): IMenuButtonItem<LocaleKey>;
14
+ export declare function PdfSelectToolMenuFactory(accessor?: IAccessor): IMenuButtonItem<LocaleKey>;
15
+ export declare function PdfTextToolMenuFactory(accessor?: IAccessor): IMenuButtonItem<LocaleKey>;
16
+ export declare function PdfFlipHorizontalMenuFactory(accessor?: IAccessor): IMenuButtonItem<LocaleKey>;
17
+ export declare function PdfFlipVerticalMenuFactory(accessor?: IAccessor): IMenuButtonItem<LocaleKey>;
18
+ export declare function PdfToggleAnnotationsMenuFactory(accessor?: IAccessor): IMenuButtonItem<LocaleKey>;
19
+ export declare function PdfToggleBoundsMenuFactory(accessor?: IAccessor): IMenuButtonItem<LocaleKey>;
20
+ export declare function PdfToggleRawMenuFactory(accessor?: IAccessor): IMenuButtonItem<LocaleKey>;
21
+ export declare function PdfInsertTextBoxMenuFactory(): IMenuButtonItem<LocaleKey>;
22
+ export declare function PdfInsertParagraphMenuFactory(): IMenuButtonItem<LocaleKey>;
23
+ export declare function PdfInsertImageMenuFactory(): IMenuButtonItem<LocaleKey>;
24
+ export declare function PdfInsertDividerMenuFactory(): IMenuButtonItem<LocaleKey>;
25
+ export declare function PdfInsertTableMenuFactory(): IMenuSelectorItem<LocaleKey>;
26
+ export declare function PdfInsertListMenuFactory(): IMenuSelectorItem<LocaleKey, PdfListPresetId, PdfListPresetId>;
27
+ export declare function PdfInsertPageMenuFactory(): IMenuButtonItem<LocaleKey>;
@@ -0,0 +1,4 @@
1
+ import type { MenuSchemaType } from '@univerjs/ui';
2
+ export declare const pdfRibbonSchema: MenuSchemaType;
3
+ export declare const pdfPageThumbnailContextMenuSchema: MenuSchemaType;
4
+ export declare const pdfCanvasContextMenuSchema: MenuSchemaType;
@@ -0,0 +1,19 @@
1
+ import type { IUniverPdfsUIConfig } from './config/config';
2
+ import { ICommandService, IConfigService, Injector, Plugin, UniverInstanceType } from '@univerjs/core';
3
+ /** Formal UI/runtime plugin for editable PDF Units. */
4
+ export declare class UniverPdfsUIPlugin extends Plugin {
5
+ private readonly _config;
6
+ readonly _injector: Injector;
7
+ private readonly _commandService;
8
+ private readonly _configService;
9
+ static pluginName: string;
10
+ static packageName: string;
11
+ static version: string;
12
+ static type: UniverInstanceType;
13
+ constructor(_config: Partial<IUniverPdfsUIConfig> | undefined, _injector: Injector, _commandService: ICommandService, _configService: IConfigService);
14
+ onStarting(): void;
15
+ onReady(): void;
16
+ onRendered(): void;
17
+ private _isEditorEnabled;
18
+ private _initCommands;
19
+ }
@@ -0,0 +1,29 @@
1
+ import type { IPdfGraphicsState, IPdfSourceOperationPathSegment, PdfDisplayListId, PdfRect } from '@univerjs-pro/pdfs';
2
+ import type { IPdfRenderBackend } from '@univerjs-pro/pdfs-render';
3
+ import type { IPdfCanvasGroupCompositor } from './canvas-group-compositor';
4
+ import type { IPdfCanvasFactory } from './canvas-types';
5
+ import type { IPdfFontFamilyResolver } from './decode-manifest';
6
+ import type { IPdfFontOutlineResolver } from './font-outline';
7
+ import type { IPdfImageResolver } from './image-resolver';
8
+ import type { IPdfCanvasSourceSuppressionMatcher } from './source-suppression';
9
+ import type { IPdfCanvasViewport } from './viewport';
10
+ export interface IPdfCanvasBackendOptions {
11
+ imageResolver?: IPdfImageResolver;
12
+ fontFamilyResolver?: IPdfFontFamilyResolver;
13
+ fontOutlineResolver?: IPdfFontOutlineResolver;
14
+ canvasFactory?: IPdfCanvasFactory;
15
+ groupCompositor?: IPdfCanvasGroupCompositor | null;
16
+ enableTransparencyGroups?: boolean;
17
+ sourceSuppressionMatcher?: IPdfCanvasSourceSuppressionMatcher;
18
+ operationPath?: IPdfSourceOperationPathSegment[];
19
+ currentDisplayListId?: PdfDisplayListId;
20
+ }
21
+ interface ICanvasBackendGraphicsState {
22
+ fillAlpha: number;
23
+ opacityMultiplier: number;
24
+ strokeAlpha: number;
25
+ softMask?: IPdfGraphicsState['softMask'];
26
+ }
27
+ export declare function createCanvas2DPdfRenderBackend(context: CanvasRenderingContext2D, viewport: IPdfCanvasViewport, options?: IPdfCanvasBackendOptions, inheritedGraphicsState?: Readonly<ICanvasBackendGraphicsState>): IPdfRenderBackend;
28
+ export declare function rectToCanvas(rect: PdfRect, viewport: IPdfCanvasViewport): [number, number, number, number];
29
+ export {};
@@ -0,0 +1,54 @@
1
+ import type { IPdfPage, IPdfSoftMaskState, PdfJsonValue, PdfRectPt } from '@univerjs-pro/pdfs';
2
+ import type { IPdfBackendFormXObjectContext } from '@univerjs-pro/pdfs-render';
3
+ import type { IPdfCanvasFactory } from './canvas-types';
4
+ import type { IPdfCanvasViewport } from './viewport';
5
+ export interface IPdfCanvasGroupMetadata {
6
+ subtype?: string;
7
+ isolated?: boolean;
8
+ knockout?: boolean;
9
+ raw?: Record<string, PdfJsonValue>;
10
+ }
11
+ export interface IPdfCanvasGroupCompositeParams {
12
+ context: CanvasRenderingContext2D;
13
+ viewport: IPdfCanvasViewport;
14
+ formContext: IPdfBackendFormXObjectContext;
15
+ formBBox: PdfRectPt;
16
+ blendMode: string;
17
+ opacity?: number;
18
+ group?: IPdfCanvasGroupMetadata;
19
+ renderGroup(context: CanvasRenderingContext2D): void;
20
+ }
21
+ export interface IPdfCanvasSoftMaskCompositeParams {
22
+ context: CanvasRenderingContext2D;
23
+ viewport: IPdfCanvasViewport;
24
+ page: IPdfPage;
25
+ softMask: IPdfSoftMaskState;
26
+ blendMode: string;
27
+ renderSource(context: CanvasRenderingContext2D): void;
28
+ renderMask(context: CanvasRenderingContext2D): void;
29
+ }
30
+ export interface IPdfCanvasGroupCompositor {
31
+ compositeFormXObject(params: IPdfCanvasGroupCompositeParams): boolean;
32
+ compositeSoftMask(params: IPdfCanvasSoftMaskCompositeParams): boolean;
33
+ }
34
+ export interface IPdfCanvasGroupCompositorOptions {
35
+ canvasFactory?: IPdfCanvasFactory;
36
+ }
37
+ export interface IPdfGroupPixelBlendOptions {
38
+ blendMode: string;
39
+ opacity?: number;
40
+ /**
41
+ * @deprecated PDF blend modes apply against any opaque backdrop color,
42
+ * including white. This option is kept only so older callers do not break.
43
+ */
44
+ backdropWhiteThreshold?: number;
45
+ sourceAlphaThreshold?: number;
46
+ }
47
+ export interface IPdfSoftMaskImageDataOptions {
48
+ subtype?: string;
49
+ }
50
+ export declare function createCanvasGroupCompositor(options?: IPdfCanvasGroupCompositorOptions): IPdfCanvasGroupCompositor;
51
+ export declare function createDefaultPdfCanvasFactory(): IPdfCanvasFactory | undefined;
52
+ export declare function createPdfCanvasGroupMetadata(raw: Record<string, PdfJsonValue> | undefined): IPdfCanvasGroupMetadata | undefined;
53
+ export declare function blendGroupImageDataIntoBackdrop(backdrop: ImageData, source: ImageData, options: IPdfGroupPixelBlendOptions): ImageData;
54
+ export declare function applySoftMaskImageDataToSource(source: ImageData, mask: ImageData, options?: IPdfSoftMaskImageDataOptions): ImageData;
@@ -0,0 +1,29 @@
1
+ import type { IPdfDocument, IPdfSourceSuppression, PdfObjectId } from '@univerjs-pro/pdfs';
2
+ import type { IPdfRenderScheduler } from '@univerjs-pro/pdfs-render';
3
+ import type { IPdfCanvasGroupCompositor } from './canvas-group-compositor';
4
+ import type { IPdfCanvasFactory } from './canvas-types';
5
+ import type { IPdfFontFamilyResolver, IPdfPageRasterResolver } from './decode-manifest';
6
+ import type { IPdfFontOutlineResolver } from './font-outline';
7
+ import type { IPdfImageResolver } from './image-resolver';
8
+ import type { IPdfCanvasViewport, IPdfCanvasViewportOptions } from './viewport';
9
+ export interface IPdfCanvasRenderOptions extends IPdfCanvasViewportOptions {
10
+ background?: string;
11
+ showPageBoundary?: boolean;
12
+ showRawObjects?: boolean;
13
+ showAnnotations?: boolean;
14
+ showAnnotationBounds?: boolean;
15
+ imageResolver?: IPdfImageResolver;
16
+ fontFamilyResolver?: IPdfFontFamilyResolver;
17
+ fontOutlineResolver?: IPdfFontOutlineResolver;
18
+ pageRasterResolver?: IPdfPageRasterResolver;
19
+ canvasFactory?: IPdfCanvasFactory;
20
+ groupCompositor?: IPdfCanvasGroupCompositor | null;
21
+ enableTransparencyGroups?: boolean;
22
+ preferPageRaster?: boolean;
23
+ scheduler?: IPdfRenderScheduler;
24
+ suppressedDisplayOperationIds?: Iterable<string>;
25
+ suppressedObjectIds?: ReadonlySet<PdfObjectId>;
26
+ sourceSuppressions?: Iterable<IPdfSourceSuppression>;
27
+ }
28
+ export declare function renderPdfDocumentToCanvas(document: IPdfDocument, canvas: HTMLCanvasElement, options?: IPdfCanvasRenderOptions): IPdfCanvasViewport;
29
+ export declare function renderPdfPageToCanvas(document: IPdfDocument, pageId: string, canvas: HTMLCanvasElement, options?: IPdfCanvasRenderOptions): IPdfCanvasViewport;
@@ -0,0 +1,12 @@
1
+ import type { IPdfPage, IPdfShadingAsset, PdfMatrix } from '@univerjs-pro/pdfs';
2
+ import type { IPdfCanvasViewport } from './viewport';
3
+ export interface ICanvasShadingAssetDrawParams {
4
+ asset: IPdfShadingAsset | undefined;
5
+ matrix: PdfMatrix | undefined;
6
+ page: IPdfPage;
7
+ context: CanvasRenderingContext2D;
8
+ viewport: IPdfCanvasViewport;
9
+ }
10
+ export type CanvasShadingFillStyle = string | CanvasGradient;
11
+ export declare function drawCanvasShadingAsset(params: ICanvasShadingAssetDrawParams): void;
12
+ export declare function createCanvasShadingFillStyle(params: ICanvasShadingAssetDrawParams): CanvasShadingFillStyle | undefined;
@@ -0,0 +1,15 @@
1
+ import type { IPdfBackendTextContext } from '@univerjs-pro/pdfs-render';
2
+ import type { IPdfFontFamilyResolver } from './decode-manifest';
3
+ import type { IPdfFontOutlineResolver } from './font-outline';
4
+ import type { IPdfCanvasViewport } from './viewport';
5
+ export interface IPdfCanvasTextRenderOptions {
6
+ fontFamilyResolver?: IPdfFontFamilyResolver;
7
+ fontOutlineResolver?: IPdfFontOutlineResolver;
8
+ }
9
+ export interface ICanvasTextOperationDrawParams {
10
+ textContext: IPdfBackendTextContext;
11
+ context: CanvasRenderingContext2D;
12
+ viewport: IPdfCanvasViewport;
13
+ options?: IPdfCanvasTextRenderOptions;
14
+ }
15
+ export declare function drawCanvasTextOperation(params: ICanvasTextOperationDrawParams): void;
@@ -0,0 +1,3 @@
1
+ export interface IPdfCanvasFactory {
2
+ createCanvas(width: number, height: number): HTMLCanvasElement | undefined;
3
+ }
@@ -0,0 +1,210 @@
1
+ import type { IPdfDocument, IPdfFontAsset, IPdfPage, IPdfTextRun, PdfAssetId } from '@univerjs-pro/pdfs';
2
+ import type { IPdfImageResolver } from './image-resolver';
3
+ import type { IPdfFontOutline, IPdfFontOutlineResolver } from './font-outline';
4
+ import type { IPdfCanvasViewport } from './viewport';
5
+ export interface IPdfLocalDecodeManifest {
6
+ /** Stable marker used to distinguish this file from qpdf JSON and Univer PDF model JSON. */
7
+ schema: 'univer-pdf-decode-manifest';
8
+ /** Manifest schema version. Increment this when entry shapes become incompatible. */
9
+ schemaVersion: 1;
10
+ /** Optional model document id that this decode output belongs to. */
11
+ documentId?: string;
12
+ /** Original PDF file name, kept for diagnostics and human inspection. */
13
+ sourceFileName?: string;
14
+ /** ISO timestamp generated by the local batch decoder or future backend worker. */
15
+ generatedAt: string;
16
+ /** Decoder provenance. This lets the frontend reason about local, worker, and backend outputs uniformly. */
17
+ decoder: {
18
+ kind: 'local-batch' | 'go-local' | 'worker' | 'backend';
19
+ tools?: Record<string, string>;
20
+ };
21
+ /** Page-level decoded rasters keyed by page id whenever the model page ids are known. */
22
+ pageRasters: Record<string, IPdfDecodedPageRasterEntry>;
23
+ /** Image-level decoded assets keyed by PDF model image asset id. */
24
+ imageAssets: Record<string, IPdfDecodedImageAssetEntry>;
25
+ /** Font-face assets keyed by PDF model font id when a decoder can create a browser-loadable font. */
26
+ fontFaces?: Record<string, IPdfDecodedFontFaceEntry>;
27
+ /** Non-fatal limitations or fallbacks used while producing the manifest. */
28
+ warnings?: string[];
29
+ }
30
+ export interface IPdfDecodedPageRasterEntry {
31
+ /** Asset category discriminator for page raster entries. */
32
+ kind: 'pageRaster';
33
+ /** Target page id in IPdfDocument.pages. */
34
+ pageId: string;
35
+ /** Zero-based page index for fallback matching when page ids are unavailable. */
36
+ pageIndex: number;
37
+ /** Decode status. Failed entries are retained for diagnostics but skipped by the renderer. */
38
+ status: 'decoded' | 'failed';
39
+ /** Browser-loadable image encoding. */
40
+ format?: 'png' | 'jpeg' | 'webp';
41
+ /** Manifest-relative asset URL for served files. */
42
+ href?: string;
43
+ /** Embedded asset payload for file-input demos and offline previews. */
44
+ dataUrl?: string;
45
+ /** Decoded raster width in pixels. */
46
+ width?: number;
47
+ /** Decoded raster height in pixels. */
48
+ height?: number;
49
+ /** Decode resolution. The renderer stretches to the PDF viewport, so this is diagnostic for now. */
50
+ dpi?: number;
51
+ /** Failure reason when status is failed. */
52
+ error?: string;
53
+ }
54
+ export interface IPdfDecodedImageAssetEntry {
55
+ /** Asset category discriminator for image XObject and inline image entries. */
56
+ kind: 'image';
57
+ /** Target image asset id in the IPdfDocument asset table. */
58
+ assetId: string;
59
+ /** Decode status, including page-raster coverage while object-level extraction is unavailable. */
60
+ status: 'decoded' | 'covered-by-page-raster' | 'pending' | 'failed';
61
+ /** Browser-loadable image encoding after stream filters and color transforms are decoded. */
62
+ format?: 'png' | 'jpeg' | 'webp';
63
+ /** Manifest-relative asset URL for served files. */
64
+ href?: string;
65
+ /** Embedded asset payload for file-input demos and offline previews. */
66
+ dataUrl?: string;
67
+ /** Decoded image width in pixels. */
68
+ width?: number;
69
+ /** Decoded image height in pixels. */
70
+ height?: number;
71
+ /** Original PDF object reference such as "12 0 R", when known. */
72
+ objectRef?: string;
73
+ /** Resource dictionary name such as "Im1", when known. */
74
+ resourceName?: string;
75
+ /** Decoder path used for this asset, useful for diagnostics and future cache invalidation. */
76
+ decodeMethod?: 'pdfimages' | 'jbig2dec' | 'qdf-dct-stream' | 'qdf-dct-stream-cmyk-to-rgb' | 'qdf-raw-image-stream' | 'page-raster-crop' | 'pdfium-page-raster-crop' | 'custom';
77
+ /** Source PDF filter/encoding reported by the decoder, such as "ccitt", "jbig2", or "image". */
78
+ sourceEncoding?: string;
79
+ /** Image asset id for an explicit PDF `/Mask` image when this entry has been pre-composed by the decoder. */
80
+ maskAssetId?: string;
81
+ /** Image asset id for a PDF `/SMask` soft mask when this entry has been pre-composed by the decoder. */
82
+ softMaskAssetId?: string;
83
+ /**
84
+ * Alpha or stencil source that has already been resolved into this browser-loadable image.
85
+ *
86
+ * Front-end renderers should treat entries with values other than `none` as already
87
+ * composed and avoid applying PDF mask logic again.
88
+ */
89
+ alphaSource?: PdfDecodedImageAlphaSource;
90
+ /** Failure or fallback reason for diagnostics. */
91
+ error?: string;
92
+ }
93
+ export type PdfDecodedImageAlphaSource = 'decoded-alpha' | 'soft-mask' | 'image-mask' | 'color-key' | 'none';
94
+ export type PdfDecodedFontFaceDecodeMethod =
95
+ /** PDFium returned an already browser-loadable OpenType/TrueType/WOFF container. */
96
+ 'pdfium-font-data'
97
+ /** PDFium returned raw CFF/CIDFontType0C data and the Go decoder wrapped it as OTF. */
98
+ | 'pdfium-cff-to-otf'
99
+ /** PDFium exposed CFF glyph outlines and the decoder rebuilt them into a sanitizer-safe OTF. */
100
+ | 'pdfium-cff-glyphs-to-otf'
101
+ /** PDFium exposed Type1 glyph outlines and the decoder rebuilt them into a sanitizer-safe OTF. */
102
+ | 'pdfium-type1-glyphs-to-otf'
103
+ /** PDFium exposed TrueType glyph outlines and the decoder rebuilt them into a sanitizer-safe OTF. */
104
+ | 'pdfium-truetype-glyphs-to-otf'
105
+ /** QDF exposed raw CFF data and the decoder wrapped it as OTF. */
106
+ | 'qdf-cff-to-otf'
107
+ /** QDF exposed the original TrueType stream and the decoder repacked sfnt tables for browser sanitizer compatibility. */
108
+ | 'qdf-truetype-sfnt-repack'
109
+ /** QDF exposed an OpenType sfnt and the decoder realigned its table directory for browser sanitizer compatibility. */
110
+ | 'qdf-opentype-sfnt-repack'
111
+ /** PDFium exposed TrueType data and the decoder repacked sfnt tables for browser sanitizer compatibility. */
112
+ | 'pdfium-truetype-sfnt-repack'
113
+ /** PDFium exposed OpenType data and the decoder realigned its table directory for browser sanitizer compatibility. */
114
+ | 'pdfium-opentype-sfnt-repack'
115
+ /** The decoder found raw font bytes but no suitable open-source conversion path is wired yet. */
116
+ | 'unsupported-font-program'
117
+ /** Legacy/local-batch spelling for CFF wrapping kept for older manifests. */
118
+ | 'cff-to-otf'
119
+ /** Future Type1 conversion path once a dedicated converter is added. */
120
+ | 'type1-to-otf'
121
+ /** Future direct TrueType stream extraction path when it does not come from PDFium font data. */
122
+ | 'ttf'
123
+ /** Escape hatch for one-off or experimental local decoders. */
124
+ | 'custom';
125
+ export interface IPdfDecodedFontFaceEntry {
126
+ /** Asset category discriminator for browser-loadable decoded fonts. */
127
+ kind: 'fontFace';
128
+ /** Target model font id. For Type0 fonts this can be either the composite id or a descendant CID font id. */
129
+ fontId: PdfAssetId;
130
+ /** Decode status. Failed entries are retained for diagnostics and skipped by the renderer. */
131
+ status: 'decoded' | 'pending' | 'failed';
132
+ /** CSS font-family name registered for this decoded font. */
133
+ fontFamily?: string;
134
+ /** Browser-loadable font container produced by the decoder. */
135
+ format?: 'otf' | 'ttf' | 'woff' | 'woff2';
136
+ /** Manifest-relative asset URL for served font files. */
137
+ href?: string;
138
+ /** Embedded font payload for file-input demos and offline previews. */
139
+ dataUrl?: string;
140
+ /** Raw PDF stream asset id that produced this decoded font face. */
141
+ sourceStreamAssetId?: PdfAssetId;
142
+ /** Original embedded font program retained for front-end hinting or future rasterizers. */
143
+ sourceProgram?: IPdfDecodedFontSourceProgramEntry;
144
+ /** Original PDF object reference for diagnostics. */
145
+ objectRef?: string;
146
+ /** Decoder path used for this asset. */
147
+ decodeMethod?: PdfDecodedFontFaceDecodeMethod;
148
+ /** Failure reason when status is failed. */
149
+ error?: string;
150
+ }
151
+ export interface IPdfDecodedFontSourceProgramEntry {
152
+ /** Resource binding id. This normally matches the model font's fontFileStreamAssetId. */
153
+ assetId: PdfAssetId;
154
+ /** Retention status; a failed entry does not invalidate the browser-loadable decoded face. */
155
+ status: 'decoded' | 'failed';
156
+ /** Original embedded program kind. */
157
+ format?: 'type1';
158
+ /** Manifest-relative URL for local and backend-served manifests. */
159
+ href?: string;
160
+ /** Optional inline source for offline fixtures. */
161
+ dataUrl?: string;
162
+ /** Failure reason when the original program could not be retained. */
163
+ error?: string;
164
+ }
165
+ export interface IPdfFontFamilyResolverContext {
166
+ /** Current model document. */
167
+ document: IPdfDocument;
168
+ /** Font asset referenced by the text run. */
169
+ font: IPdfFontAsset;
170
+ /** Text run being rendered. */
171
+ run: IPdfTextRun;
172
+ }
173
+ export type IPdfFontFamilyResolver = (context: IPdfFontFamilyResolverContext) => string | undefined;
174
+ export type PdfDecodedFontFaceMatchKind = 'direct' | 'descendant' | 'source-stream' | 'family';
175
+ export interface IPdfDecodedFontFaceMatch {
176
+ entry: IPdfDecodedFontFaceEntry;
177
+ matchKind: PdfDecodedFontFaceMatchKind;
178
+ rank: number;
179
+ }
180
+ export interface IPdfPageRasterResolverContext {
181
+ /** Current model document. */
182
+ document: IPdfDocument;
183
+ /** Current page being rendered. */
184
+ page: IPdfPage;
185
+ /** Canvas viewport after PDF point units are mapped to CSS pixels. */
186
+ viewport: IPdfCanvasViewport;
187
+ }
188
+ export interface IPdfResolvedPageRaster {
189
+ /** Runtime-loaded image source that canvas can draw. */
190
+ source: CanvasImageSource;
191
+ /** Manifest entry that produced this source. */
192
+ entry: IPdfDecodedPageRasterEntry;
193
+ }
194
+ export type PdfPageRasterResolverResult = CanvasImageSource | IPdfResolvedPageRaster | undefined;
195
+ /** Resolves a decoded page raster for a page render. */
196
+ export type IPdfPageRasterResolver = (context: IPdfPageRasterResolverContext) => PdfPageRasterResolverResult;
197
+ export interface IPdfDecodeManifestResolverOptions {
198
+ /** Runtime image objects keyed by page id or manifest href. */
199
+ pageRasterSources?: Record<string, CanvasImageSource>;
200
+ /** Runtime image objects keyed by image asset id, manifest href, or data URL. */
201
+ imageSources?: Record<string, CanvasImageSource>;
202
+ /** Parsed Type1 outlines keyed by font id, manifest href, data URL, or decoded family. */
203
+ fontOutlines?: Record<string, IPdfFontOutline>;
204
+ }
205
+ export declare function createPdfDecodeManifestPageRasterResolver(manifest: IPdfLocalDecodeManifest, options?: IPdfDecodeManifestResolverOptions): IPdfPageRasterResolver;
206
+ export declare function getResolvedPageRasterSource(result: PdfPageRasterResolverResult): CanvasImageSource | undefined;
207
+ export declare function createPdfDecodeManifestImageResolver(manifest: IPdfLocalDecodeManifest, options?: IPdfDecodeManifestResolverOptions): IPdfImageResolver;
208
+ export declare function createPdfDecodeManifestFontFamilyResolver(manifest: IPdfLocalDecodeManifest): IPdfFontFamilyResolver;
209
+ export declare function createPdfDecodeManifestFontOutlineResolver(manifest: IPdfLocalDecodeManifest, options?: IPdfDecodeManifestResolverOptions): IPdfFontOutlineResolver;
210
+ export declare function resolveDecodedFontFaceMatch(font: IPdfFontAsset, manifest: IPdfLocalDecodeManifest, document?: IPdfDocument): IPdfDecodedFontFaceMatch | undefined;
@@ -0,0 +1,3 @@
1
+ import type { IPdfDocument } from '@univerjs-pro/pdfs';
2
+ export declare function parsePdfDocumentJsonText(text: string): IPdfDocument;
3
+ export declare function assertPdfDocumentJson(value: unknown): IPdfDocument;
@@ -0,0 +1,21 @@
1
+ import type { IPdfDocument, PdfObjectId } from '@univerjs-pro/pdfs';
2
+ import type { IPdfFontFamilyResolver } from './decode-manifest';
3
+ import type { IPdfFontOutlineResolver } from './font-outline';
4
+ import type { IPdfImageResolver } from './image-resolver';
5
+ import type { IPdfCanvasViewport } from './viewport';
6
+ export interface IPdfDocumentObjectRenderOptions {
7
+ document: IPdfDocument;
8
+ pageId: string;
9
+ context: CanvasRenderingContext2D;
10
+ viewport: IPdfCanvasViewport;
11
+ imageResolver?: IPdfImageResolver;
12
+ fontFamilyResolver?: IPdfFontFamilyResolver;
13
+ fontOutlineResolver?: IPdfFontOutlineResolver;
14
+ suppressedObjectIds?: ReadonlySet<PdfObjectId>;
15
+ }
16
+ /**
17
+ * Render persisted semantic/editable page objects as part of the normal
18
+ * document render path. Editor-only affordances such as selection, handles, and
19
+ * active text state stay in the overlay renderer.
20
+ */
21
+ export declare function renderPdfDocumentPageObjectsToCanvas(options: IPdfDocumentObjectRenderOptions): void;
@@ -0,0 +1,27 @@
1
+ import type { IPdfDocument, IPdfFontAsset, IPdfTextRun } from '@univerjs-pro/pdfs';
2
+ export interface IPdfFontOutlinePathCommand {
3
+ type: 'M' | 'L' | 'C' | 'Q' | 'Z';
4
+ x?: number;
5
+ y?: number;
6
+ x1?: number;
7
+ y1?: number;
8
+ x2?: number;
9
+ y2?: number;
10
+ }
11
+ export interface IPdfFontOutline {
12
+ charToGlyph: (character: string) => {
13
+ index: number;
14
+ };
15
+ getPath: (text: string, x: number, y: number, fontSize: number) => {
16
+ commands: IPdfFontOutlinePathCommand[];
17
+ };
18
+ }
19
+ export interface IPdfFontOutlineResolverContext {
20
+ document: IPdfDocument;
21
+ font: IPdfFontAsset;
22
+ run: IPdfTextRun;
23
+ }
24
+ export type IPdfFontOutlineResolver = (context: IPdfFontOutlineResolverContext) => IPdfFontOutline | undefined;
25
+ export declare function parsePdfFontOutline(data: ArrayBuffer): IPdfFontOutline;
26
+ export declare function isPdfType1FontAsset(font: IPdfFontAsset | undefined): boolean;
27
+ export declare function tracePdfFontOutlineText(context: CanvasRenderingContext2D, outline: IPdfFontOutline, text: string, x: number, y: number, fontSize: number): boolean;
@@ -0,0 +1,71 @@
1
+ import type { IPdfDocument, IPdfFontAsset, PdfAssetId } from '@univerjs-pro/pdfs';
2
+ import type { IPdfDecodedFontFaceEntry, IPdfLocalDecodeManifest, PdfDecodedFontFaceMatchKind } from './decode-manifest';
3
+ export interface IPdfFontRenderReportOptions {
4
+ decodeManifest?: IPdfLocalDecodeManifest;
5
+ }
6
+ export interface IPdfFontRenderReport {
7
+ schema: 'univer-pdf-font-render-report';
8
+ schemaVersion: 1;
9
+ documentId: string;
10
+ totals: IPdfFontRenderReportTotals;
11
+ fonts: IPdfFontRenderReportFont[];
12
+ textRuns: IPdfFontRenderReportTextRun[];
13
+ }
14
+ export interface IPdfFontRenderReportTotals {
15
+ fontAssets: number;
16
+ embeddedFonts: number;
17
+ decodedFontFaces: number;
18
+ textOps: number;
19
+ textRuns: number;
20
+ glyphRuns: number;
21
+ textRunsUsingDecodedFontFace: number;
22
+ textRunsUsingFallbackFont: number;
23
+ missingFontAssets: number;
24
+ fontsRequiringCMap: number;
25
+ fontsRequiringGlyphProgram: number;
26
+ fontsRequiringShaping: number;
27
+ }
28
+ export interface IPdfFontRenderReportFont {
29
+ fontId: PdfAssetId;
30
+ family?: string;
31
+ postScriptName?: string;
32
+ pdfSubtype?: string;
33
+ fontProgramKind?: string;
34
+ embedded: boolean;
35
+ subset?: boolean;
36
+ descendantFontIds?: PdfAssetId[];
37
+ diagnostics?: IPdfFontAsset['diagnostics'];
38
+ decodedFontFace?: IPdfFontRenderReportDecodedFontFace;
39
+ decodeReadiness: IPdfFontDecodeReadiness;
40
+ referencedByTextRuns: number;
41
+ glyphRunCount: number;
42
+ renderStatus: IPdfFontRenderStatus;
43
+ }
44
+ export interface IPdfFontRenderReportDecodedFontFace {
45
+ fontId: PdfAssetId;
46
+ fontFamily?: string;
47
+ format?: IPdfDecodedFontFaceEntry['format'];
48
+ decodeMethod?: IPdfDecodedFontFaceEntry['decodeMethod'];
49
+ sourceStreamAssetId?: PdfAssetId;
50
+ matchKind: PdfDecodedFontFaceMatchKind;
51
+ }
52
+ export interface IPdfFontRenderReportTextRun {
53
+ displayListId: string;
54
+ opId: string;
55
+ runIndex: number;
56
+ textLength: number;
57
+ fontId?: PdfAssetId;
58
+ fontFamily?: string;
59
+ glyphCount?: number;
60
+ sourceCodeCount?: number;
61
+ renderStatus: IPdfFontRenderStatus;
62
+ decodedFontFaceFontId?: PdfAssetId;
63
+ }
64
+ export type IPdfFontRenderStatus = 'decoded-font-face' | 'fallback-css-font' | 'missing-font-asset' | 'no-font-reference';
65
+ export type IPdfFontDecodeReadinessStatus = 'decoded-font-face' | 'needs-decoded-font-face' | 'needs-cmap' | 'needs-type3-charproc-rendering' | 'ready-or-fallback';
66
+ export type IPdfFontDecodeRecommendedAction = 'none' | 'decode-cff-cidfonttype0c-to-otf' | 'parse-cmap-or-to-unicode' | 'render-type3-charproc-display-list';
67
+ export interface IPdfFontDecodeReadiness {
68
+ status: IPdfFontDecodeReadinessStatus;
69
+ recommendedAction: IPdfFontDecodeRecommendedAction;
70
+ }
71
+ export declare function createPdfFontRenderReport(document: IPdfDocument, options?: IPdfFontRenderReportOptions): IPdfFontRenderReport;
@@ -0,0 +1,30 @@
1
+ import type { IPdfDocument, IPdfImageAsset, PdfDisplayOperation } from '@univerjs-pro/pdfs';
2
+ import type { IPdfCanvasViewport } from './viewport';
3
+ /**
4
+ * Resolved image payload consumed by the canvas renderer.
5
+ *
6
+ * The resolver may return this wrapper when it wants to attach derived sizing
7
+ * or diagnostics without changing the model asset.
8
+ */
9
+ export interface IPdfResolvedImage {
10
+ source: CanvasImageSource;
11
+ width?: number;
12
+ height?: number;
13
+ }
14
+ /**
15
+ * Context passed to the front-end image resolver.
16
+ *
17
+ * The model keeps raw PDF stream metadata; this resolver only provides already
18
+ * decoded, canvas-compatible image sources for display operations.
19
+ */
20
+ export interface IPdfImageResolverContext {
21
+ document: IPdfDocument;
22
+ asset: IPdfImageAsset;
23
+ op: Extract<PdfDisplayOperation, {
24
+ type: 'image';
25
+ }>;
26
+ viewport: IPdfCanvasViewport;
27
+ }
28
+ export type PdfImageResolverResult = CanvasImageSource | IPdfResolvedImage | undefined;
29
+ export type IPdfImageResolver = (context: IPdfImageResolverContext) => PdfImageResolverResult;
30
+ export declare function getResolvedImageSource(result: PdfImageResolverResult): CanvasImageSource | undefined;
@@ -0,0 +1,34 @@
1
+ import type { IPdfDocument } from '@univerjs-pro/pdfs';
2
+ import type { IPdfPageWindowPlan, IPdfRenderCacheSnapshot, IPdfRenderTaskResult } from '@univerjs-pro/pdfs-render';
3
+ import type { IPdfCanvasRenderOptions } from './canvas-renderer';
4
+ import type { IPdfCanvasViewport } from './viewport';
5
+ export interface IPdfCanvasRenderSessionOptions {
6
+ bufferBefore?: number;
7
+ bufferAfter?: number;
8
+ maxCacheEntries?: number;
9
+ maxCacheBytes?: number;
10
+ }
11
+ export interface IPdfCanvasRenderTaskDiagnostics {
12
+ taskId: string;
13
+ planId: string;
14
+ status: IPdfRenderTaskResult['status'];
15
+ cacheKey: string;
16
+ opCount: number;
17
+ byteSize: number;
18
+ }
19
+ export interface IPdfCanvasRenderDiagnostics {
20
+ pageWindow: IPdfPageWindowPlan;
21
+ cache: IPdfRenderCacheSnapshot;
22
+ scheduledTaskCount: number;
23
+ lastTask?: IPdfCanvasRenderTaskDiagnostics;
24
+ }
25
+ export interface IPdfCanvasRenderResult {
26
+ viewport: IPdfCanvasViewport;
27
+ diagnostics: IPdfCanvasRenderDiagnostics;
28
+ }
29
+ export interface IPdfCanvasRenderSession {
30
+ renderPage(document: IPdfDocument, pageId: string, canvas: HTMLCanvasElement, options?: Omit<IPdfCanvasRenderOptions, 'scheduler'>): IPdfCanvasRenderResult;
31
+ getDiagnostics(): IPdfCanvasRenderDiagnostics;
32
+ reset(): void;
33
+ }
34
+ export declare function createPdfCanvasRenderSession(options?: IPdfCanvasRenderSessionOptions): IPdfCanvasRenderSession;