@file-viewer/core 2.0.11 → 2.1.1

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 (116) hide show
  1. package/README.en.md +2 -2
  2. package/README.md +2 -2
  3. package/dist/config/options.d.ts +1 -1
  4. package/dist/config/options.js +1 -1
  5. package/dist/contracts/types.d.ts +76 -1
  6. package/dist/headless.d.ts +3 -3
  7. package/dist/headless.js +2 -2
  8. package/dist/index.d.ts +10 -7
  9. package/dist/index.js +106 -49
  10. package/dist/lifecycle/operations.d.ts +1 -0
  11. package/dist/lifecycle/operations.js +65 -6
  12. package/dist/platform/assets.d.ts +3 -1
  13. package/dist/platform/assets.js +43 -6
  14. package/dist/registry/capabilities.d.ts +2 -2
  15. package/dist/registry/capabilities.js +2 -1
  16. package/dist/registry/formats.d.ts +20 -7
  17. package/dist/registry/formats.js +14 -5
  18. package/dist/registry/registry.d.ts +8 -1
  19. package/dist/registry/registry.js +29 -0
  20. package/dist/renderers/image.js +1 -10
  21. package/dist/renderers/index.d.ts +320 -2
  22. package/dist/renderers/index.js +27 -157
  23. package/dist/viewer/createViewer.js +86 -3
  24. package/package.json +17 -44
  25. package/dist/renderers/archive.d.ts +0 -2
  26. package/dist/renderers/archive.js +0 -547
  27. package/dist/renderers/archiveCache.d.ts +0 -10
  28. package/dist/renderers/archiveCache.js +0 -96
  29. package/dist/renderers/archiveFallback.d.ts +0 -7
  30. package/dist/renderers/archiveFallback.js +0 -166
  31. package/dist/renderers/archiveShared.d.ts +0 -23
  32. package/dist/renderers/archiveShared.js +0 -71
  33. package/dist/renderers/audio.d.ts +0 -8
  34. package/dist/renderers/audio.js +0 -219
  35. package/dist/renderers/cad.d.ts +0 -2
  36. package/dist/renderers/cad.js +0 -446
  37. package/dist/renderers/code.d.ts +0 -11
  38. package/dist/renderers/code.js +0 -233
  39. package/dist/renderers/data.d.ts +0 -7
  40. package/dist/renderers/data.js +0 -370
  41. package/dist/renderers/drawing.d.ts +0 -10
  42. package/dist/renderers/drawing.js +0 -882
  43. package/dist/renderers/eda.d.ts +0 -2
  44. package/dist/renderers/eda.js +0 -434
  45. package/dist/renderers/edaParser.d.ts +0 -77
  46. package/dist/renderers/edaParser.js +0 -569
  47. package/dist/renderers/email.d.ts +0 -2
  48. package/dist/renderers/email.js +0 -463
  49. package/dist/renderers/epub.d.ts +0 -2
  50. package/dist/renderers/epub.js +0 -331
  51. package/dist/renderers/geo.d.ts +0 -2
  52. package/dist/renderers/geo.js +0 -284
  53. package/dist/renderers/markdown.d.ts +0 -2
  54. package/dist/renderers/markdown.js +0 -83
  55. package/dist/renderers/model.d.ts +0 -2
  56. package/dist/renderers/model.js +0 -567
  57. package/dist/renderers/ofd.d.ts +0 -2
  58. package/dist/renderers/ofd.js +0 -256
  59. package/dist/renderers/openDocument.d.ts +0 -2
  60. package/dist/renderers/openDocument.js +0 -122
  61. package/dist/renderers/pdf.d.ts +0 -3
  62. package/dist/renderers/pdf.js +0 -1001
  63. package/dist/renderers/pdfStyles.d.ts +0 -1
  64. package/dist/renderers/pdfStyles.js +0 -1
  65. package/dist/renderers/pptx.d.ts +0 -2
  66. package/dist/renderers/pptx.js +0 -217
  67. package/dist/renderers/spreadsheet/state.d.ts +0 -80
  68. package/dist/renderers/spreadsheet/state.js +0 -96
  69. package/dist/renderers/spreadsheet/view.d.ts +0 -25
  70. package/dist/renderers/spreadsheet/view.js +0 -833
  71. package/dist/renderers/spreadsheet/worker/index.d.ts +0 -2
  72. package/dist/renderers/spreadsheet/worker/index.js +0 -1
  73. package/dist/renderers/spreadsheet/worker/sheetjs/SheetJsModel.d.ts +0 -73
  74. package/dist/renderers/spreadsheet/worker/sheetjs/SheetJsModel.js +0 -623
  75. package/dist/renderers/spreadsheet/worker/sheetjs/color.d.ts +0 -2
  76. package/dist/renderers/spreadsheet/worker/sheetjs/color.js +0 -73
  77. package/dist/renderers/spreadsheet/worker/sheetjs/index.d.ts +0 -1
  78. package/dist/renderers/spreadsheet/worker/sheetjs/index.js +0 -1
  79. package/dist/renderers/spreadsheet/worker/sheetjs/parser.d.ts +0 -18
  80. package/dist/renderers/spreadsheet/worker/sheetjs/parser.js +0 -106
  81. package/dist/renderers/spreadsheet/worker/sheetjs/sheet.worker.d.ts +0 -1
  82. package/dist/renderers/spreadsheet/worker/sheetjs/sheet.worker.js +0 -11
  83. package/dist/renderers/spreadsheet/worker/type.d.ts +0 -57
  84. package/dist/renderers/spreadsheet/worker/type.js +0 -1
  85. package/dist/renderers/spreadsheet.d.ts +0 -3
  86. package/dist/renderers/spreadsheet.js +0 -929
  87. package/dist/renderers/typst.d.ts +0 -8
  88. package/dist/renderers/typst.js +0 -547
  89. package/dist/renderers/umd/parser.d.ts +0 -30
  90. package/dist/renderers/umd/parser.js +0 -408
  91. package/dist/renderers/umd.d.ts +0 -2
  92. package/dist/renderers/umd.js +0 -297
  93. package/dist/renderers/video.d.ts +0 -8
  94. package/dist/renderers/video.js +0 -108
  95. package/dist/renderers/wordDoc.d.ts +0 -5
  96. package/dist/renderers/wordDoc.js +0 -284
  97. package/dist/renderers/wordDocx.d.ts +0 -5
  98. package/dist/renderers/wordDocx.js +0 -985
  99. package/dist/renderers/wordDocx.worker.d.ts +0 -1
  100. package/dist/renderers/wordDocx.worker.js +0 -96
  101. package/vendor/ofd/dltech/jbig2/arithmetic_decoder.js +0 -183
  102. package/vendor/ofd/dltech/jbig2/ccitt.js +0 -1070
  103. package/vendor/ofd/dltech/jbig2/compatibility.js +0 -12
  104. package/vendor/ofd/dltech/jbig2/core_utils.js +0 -180
  105. package/vendor/ofd/dltech/jbig2/is_node.js +0 -27
  106. package/vendor/ofd/dltech/jbig2/jbig2.js +0 -2589
  107. package/vendor/ofd/dltech/jbig2/jbig2_stream.js +0 -81
  108. package/vendor/ofd/dltech/jbig2/primitives.js +0 -387
  109. package/vendor/ofd/dltech/jbig2/stream.js +0 -1348
  110. package/vendor/ofd/dltech/jbig2/util.js +0 -972
  111. package/vendor/ofd/dltech/ofd/ofd.d.ts +0 -11
  112. package/vendor/ofd/dltech/ofd/ofd.js +0 -100
  113. package/vendor/ofd/dltech/ofd/ofd_parser.js +0 -395
  114. package/vendor/ofd/dltech/ofd/ofd_render.js +0 -473
  115. package/vendor/ofd/dltech/ofd/ofd_util.js +0 -350
  116. package/vendor/ofd/dltech/ofd/pipeline.js +0 -26
@@ -1,11 +0,0 @@
1
- export interface ParseOfdOptions {
2
- ofd: File | Blob | ArrayBuffer;
3
- success?: (documents: unknown[]) => void;
4
- fail?: (reason: unknown) => void;
5
- }
6
-
7
- export function parseOfdDocument(options: ParseOfdOptions): void;
8
- export function renderOfd(screenWidth: number, ofdDocument: unknown): HTMLElement[];
9
- export function renderOfdByScale(ofdDocument: unknown): HTMLElement[];
10
- export function setPageScale(scale: number): void;
11
- export function getPageScale(): number;
@@ -1,100 +0,0 @@
1
- /*
2
- * ofd.js - A Javascript class for reading and rendering ofd files
3
- * <https://github.com/DLTech21/ofd.js>
4
- *
5
- * Copyright (c) 2020. DLTech21 All Rights Reserved.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the "License");
8
- * You may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- *
19
- */
20
-
21
- import {calPageBox, calPageBoxScale, renderPage} from "./ofd_render.js";
22
- import {pipeline} from "./pipeline.js";
23
- import {
24
- getDocRoots,
25
- parseSingleDoc,
26
- unzipOfd
27
- } from "./ofd_parser.js";
28
- import {getPageScal, setPageScal} from "./ofd_util.js";
29
-
30
- export const parseOfdDocument = function (options) {
31
- if (options.ofd instanceof File || options.ofd instanceof Blob || options.ofd instanceof ArrayBuffer) {
32
- doParseOFD(options);
33
- } else {
34
- options.fail?.(new Error('OFD 预览只接收 File、Blob 或 ArrayBuffer 数据'));
35
- }
36
- }
37
-
38
- const doParseOFD = function (options) {
39
- pipeline.call(this, async () => await unzipOfd(options.ofd), getDocRoots, parseSingleDoc)
40
- .then(res => {
41
- if (options.success) {
42
- options.success(res);
43
- }
44
- })
45
- .catch(res => {
46
- console.log(res)
47
- if (options.fail) {
48
- options.fail(res);
49
- }
50
- });
51
- }
52
-
53
- export const renderOfd = function (screenWidth, ofd) {
54
- let divArray = [];
55
- if (!ofd) {
56
- return divArray;
57
- }
58
- for (const page of ofd.pages) {
59
- let box = calPageBox(screenWidth, ofd.document, page);
60
- const pageId = Object.keys(page)[0];
61
- let pageDiv = document.createElement('div');
62
- pageDiv.id = pageId;
63
- pageDiv.setAttribute('style', `margin-bottom: 20px;position: relative;width:${box.w}px;height:${box.h}px;background: white;`)
64
- renderPage(pageDiv, page, ofd.tpls, ofd.fontResObj, ofd.drawParamResObj, ofd.multiMediaResObj);
65
- divArray.push(pageDiv);
66
- }
67
- return divArray;
68
- }
69
-
70
- export const renderOfdByScale = function (ofd) {
71
- let divArray = [];
72
- if (!ofd) {
73
- return divArray;
74
- }
75
- for (const page of ofd.pages) {
76
- let box = calPageBoxScale(ofd.document, page);
77
- const pageId = Object.keys(page)[0];
78
- let pageDiv = document.createElement('div');
79
- pageDiv.id = pageId;
80
- pageDiv.setAttribute('style', `margin-bottom: 20px;position: relative;width:${box.w}px;height:${box.h}px;background: white;`)
81
- renderPage(pageDiv, page, ofd.tpls, ofd.fontResObj, ofd.drawParamResObj, ofd.multiMediaResObj);
82
- divArray.push(pageDiv);
83
- }
84
- return divArray;
85
- }
86
-
87
- export const digestCheck = function (options) {
88
- // 当前预览链路只负责浏览器端展示,不执行签章摘要校验,避免把 ASN.1/国密校验运行时引入异步块。
89
- return options?.arr ? false : false
90
- }
91
-
92
- export const setPageScale = function (scale) {
93
- setPageScal(scale);
94
- }
95
-
96
- export const getPageScale = function () {
97
- return getPageScal();
98
- }
99
-
100
- export { calPageBox, calPageBoxScale, renderPage }
@@ -1,395 +0,0 @@
1
- /*
2
- * ofd.js - A Javascript class for reading and rendering ofd files
3
- * <https://github.com/DLTech21/ofd.js>
4
- *
5
- * Copyright (c) 2020. DLTech21 All Rights Reserved.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the "License");
8
- * You may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- *
19
- */
20
-
21
- import JsZip from "jszip";
22
- import parser from 'ofd-xml-parser';
23
- import {parseStBox, getExtensionByPath, replaceFirstSlash} from "./ofd_util.js";
24
- import {Jbig2Image} from '../jbig2/jbig2.js';
25
-
26
- const ensureBrowserGlobal = () => {
27
- // ofd-xml-parser 是从 DLTech21/ofd.js 继承下来的 CommonJS 包,内部读取 Node 风格 global。
28
- // 浏览器端把它映射到 globalThis,避免解析 XML 时抛出 global is not defined。
29
- if (!globalThis.global) {
30
- globalThis.global = globalThis;
31
- }
32
- globalThis.xmlParseFlag = 0;
33
- }
34
-
35
- export const unzipOfd = function (file) {
36
- return new Promise((resolve, reject) => {
37
- JsZip.loadAsync(file)
38
- .then(function (zip) {
39
- resolve(zip);
40
- }, function (e) {
41
- reject(e);
42
- });
43
- });
44
- }
45
-
46
- export const getDocRoots = async function (zip) {
47
- const data = await getJsonFromXmlContent(zip, 'OFD.xml');
48
- const docbodys = data['json']['ofd:OFD']['ofd:DocBody'];
49
- let array = [];
50
- array = array.concat(docbodys);
51
- return [zip, array]
52
- }
53
-
54
- export const parseSingleDoc = async function ([zip, array]) {
55
- let docs = [];
56
- for (let docbody of array) {
57
- if (docbody) {
58
- let res = await doGetDocRoot(zip, docbody);
59
- res = await getDocument(res);
60
- res = await getDocumentRes(res);
61
- res = await getPublicRes(res);
62
- res = await getTemplatePage(res);
63
- res = await getPage(res);
64
- docs.push(res);
65
- }
66
- }
67
- return docs;
68
- }
69
-
70
- export const doGetDocRoot = async function (zip, docbody) {
71
- let docRoot = docbody['ofd:DocRoot'];
72
- docRoot = replaceFirstSlash(docRoot);
73
- const doc = docRoot.split('/')[0];
74
- const signatures = docbody['ofd:Signatures'];
75
- const stampAnnot = await getSignature(zip, signatures, doc);
76
- let stampAnnotArray = {};
77
- for (const stamp of stampAnnot) {
78
- if (stamp.sealObj && Object.keys(stamp.sealObj).length > 0) {
79
- if (stamp.sealObj.type === 'ofd') {
80
- const stampObjs = await getSealDocumentObj(stamp);
81
- for (let stampObj of stampObjs) {
82
- stamp.stampAnnot.boundary = parseStBox(stamp.stampAnnot['@_Boundary']);
83
- //console.log(stamp.stampAnnot.boundary)
84
- stamp.stampAnnot.pageRef = stamp.stampAnnot['@_PageRef'];
85
- if (!stampAnnotArray[stamp.stampAnnot['@_PageRef']]) {
86
- stampAnnotArray[stamp.stampAnnot['@_PageRef']] = [];
87
- }
88
- stampAnnotArray[stamp.stampAnnot['@_PageRef']].push({type: 'ofd', obj: stampObj, stamp});
89
- }
90
- } else if (stamp.sealObj.type === 'png') {
91
- let img = 'data:image/png;base64,' + btoa(String.fromCharCode.apply(null, stamp.sealObj.ofdArray));
92
- let stampArray = [];
93
- stampArray = stampArray.concat(stamp.stampAnnot);
94
- for (const annot of stampArray) {
95
- if (annot) {
96
- const stampObj = {img, pageId: annot['@_PageRef'], 'boundary': parseStBox(annot['@_Boundary']), 'clip': parseStBox(annot['@_Clip'])};
97
- if (!stampAnnotArray[annot['@_PageRef']]) {
98
- stampAnnotArray[annot['@_PageRef']] = [];
99
- }
100
- stampAnnotArray[annot['@_PageRef']].push({type: 'png', obj: stampObj, stamp});
101
- }
102
- }
103
- }
104
- }
105
- }
106
- return [zip, doc, docRoot, stampAnnotArray];
107
- }
108
-
109
- export const getDocument = async function ([zip, doc, docRoot, stampAnnot]) {
110
- const data = await getJsonFromXmlContent(zip, docRoot);
111
- const documentObj = data['json']['ofd:Document'];
112
- let annotations = documentObj['ofd:Annotations'];
113
- let array = [];
114
- let annoBase;
115
- if (annotations) {
116
- if (annotations.indexOf('/') !== -1) {
117
- annoBase = annotations.substring(0, annotations.indexOf('/'));
118
- }
119
- if (annotations.indexOf(doc) === -1) {
120
- annotations = `${doc}/${annotations}`;
121
- }
122
- if (zip.files[annotations]) {
123
- annotations = await getJsonFromXmlContent(zip, annotations);
124
- array = array.concat(annotations['json']['ofd:Annotations']['ofd:Page']);
125
- }
126
- }
127
- const annotationObjs = await getAnnotations(annoBase, array, doc, zip)
128
- return [zip, doc, documentObj, stampAnnot, annotationObjs];
129
- }
130
-
131
- const getAnnotations = async function (annoBase, annotations, doc, zip) {
132
- let annotationObjs = {};
133
- for (let anno of annotations) {
134
- if (!anno) {
135
- continue
136
- }
137
- const pageId = anno['@_PageID'];
138
- let fileLoc = anno['ofd:FileLoc'];
139
- fileLoc = replaceFirstSlash(fileLoc);
140
- if (annoBase && fileLoc.indexOf(annoBase) === -1) {
141
- fileLoc = `${annoBase}/${fileLoc}`;
142
- }
143
- if (fileLoc.indexOf(doc) === -1) {
144
- fileLoc = `${doc}/${fileLoc}`;
145
- }
146
-
147
- if (zip.files[fileLoc]) {
148
- const data = await getJsonFromXmlContent(zip, fileLoc);
149
-
150
- let array = [];
151
- array = array.concat(data['json']['ofd:PageAnnot']['ofd:Annot']);
152
- if (!annotationObjs[pageId]) {
153
- annotationObjs[pageId] = [];
154
- }
155
- for (let annot of array) {
156
- if (!annot) {
157
- continue
158
- }
159
- const type = annot['@_Type'];
160
- const visible = annot['@_Visible'] ? annot['@_Visible']:true;
161
- const appearance = annot['ofd:Appearance'];
162
- let appearanceObj = {type, appearance, visible};
163
- annotationObjs[pageId].push(appearanceObj);
164
- }
165
- }
166
- }
167
- return annotationObjs;
168
- }
169
-
170
- export const getDocumentRes = async function ([zip, doc, Document, stampAnnot, annotationObjs]) {
171
- let documentResPath = Document['ofd:CommonData']['ofd:DocumentRes'];
172
- let fontResObj = {};
173
- let drawParamResObj = {};
174
- let multiMediaResObj = {};
175
- if (documentResPath) {
176
- if (documentResPath.indexOf(doc) == -1) {
177
- documentResPath = `${doc}/${documentResPath}`;
178
- }
179
- if (zip.files[documentResPath]) {
180
- const data = await getJsonFromXmlContent(zip, documentResPath);
181
- const documentResObj = data['json']['ofd:Res'];
182
- fontResObj = await getFont(documentResObj);
183
- drawParamResObj = await getDrawParam(documentResObj);
184
- multiMediaResObj = await getMultiMediaRes(zip, documentResObj, doc);
185
- }
186
- }
187
- return [zip, doc, Document, stampAnnot, annotationObjs, fontResObj, drawParamResObj, multiMediaResObj];
188
- }
189
-
190
- export const getPublicRes = async function ([zip, doc, Document, stampAnnot, annotationObjs, fontResObj, drawParamResObj, multiMediaResObj]) {
191
- let publicResPath = Document['ofd:CommonData']['ofd:PublicRes'];
192
- if (publicResPath) {
193
- if (publicResPath.indexOf(doc) == -1) {
194
- publicResPath = `${doc}/${publicResPath}`;
195
- }
196
- if (zip.files[publicResPath]) {
197
- const data = await getJsonFromXmlContent(zip, publicResPath);
198
- const publicResObj = data['json']['ofd:Res'];
199
- let fontObj = await getFont(publicResObj);
200
- fontResObj = Object.assign(fontResObj, fontObj);
201
- let drawParamObj = await getDrawParam(publicResObj);
202
- drawParamResObj = Object.assign(drawParamResObj, drawParamObj);
203
- let multiMediaObj = await getMultiMediaRes(zip, publicResObj, doc);
204
- multiMediaResObj = Object.assign(multiMediaResObj, multiMediaObj);
205
- }
206
- }
207
- return [zip, doc, Document, stampAnnot, annotationObjs, fontResObj, drawParamResObj, multiMediaResObj];
208
- }
209
-
210
- export const getTemplatePage = async function ([zip, doc, Document, stampAnnot, annotationObjs, fontResObj, drawParamResObj, multiMediaResObj]) {
211
- let templatePages = Document['ofd:CommonData']['ofd:TemplatePage'];
212
- let array = [];
213
- array = array.concat(templatePages);
214
- let tpls = {};
215
- for (const templatePage of array) {
216
- if (templatePage) {
217
- let pageObj = await parsePage(zip, templatePage, doc);
218
- tpls[Object.keys(pageObj)[0]] = pageObj[Object.keys(pageObj)[0]];
219
- }
220
- }
221
- return [zip, doc, Document, stampAnnot, annotationObjs, tpls, fontResObj, drawParamResObj, multiMediaResObj];
222
- }
223
-
224
- export const getPage = async function ([zip, doc, Document, stampAnnot, annotationObjs, tpls, fontResObj, drawParamResObj, multiMediaResObj]) {
225
- let pages = Document['ofd:Pages']['ofd:Page'];
226
- let array = [];
227
- array = array.concat(pages);
228
- let res = [];
229
- for (const page of array) {
230
- if (page) {
231
- let pageObj = await parsePage(zip, page, doc);
232
- const pageId = Object.keys(pageObj)[0];
233
- const currentPageStamp = stampAnnot[pageId];
234
- if (currentPageStamp) {
235
- pageObj[pageId].stamp = currentPageStamp;
236
- }
237
- const annotationObj = annotationObjs[pageId];
238
- if (annotationObj) {
239
- pageObj[pageId].annotation = annotationObj;
240
- }
241
- res.push(pageObj);
242
- }
243
- }
244
- return {
245
- 'doc': doc,
246
- 'document': Document,
247
- 'pages': res,
248
- 'tpls': tpls,
249
- 'stampAnnot': stampAnnot,
250
- fontResObj,
251
- drawParamResObj,
252
- multiMediaResObj
253
- };
254
- }
255
-
256
- const getFont = async function (res) {
257
- const fonts = res['ofd:Fonts'];
258
- let fontResObj = {};
259
- if (fonts) {
260
- let fontArray = [];
261
- fontArray = fontArray.concat(fonts['ofd:Font']);
262
- for (const font of fontArray) {
263
- if (font) {
264
- if (font['@_FamilyName']) {
265
- fontResObj[font['@_ID']] = font['@_FamilyName'];
266
- } else {
267
- fontResObj[font['@_ID']] = font['@_FontName'];
268
- }
269
- }
270
- }
271
- }
272
- return fontResObj;
273
- }
274
-
275
- const getDrawParam = async function (res) {
276
- const drawParams = res['ofd:DrawParams'];
277
- let drawParamResObj = {};
278
- if (drawParams) {
279
- let array = [];
280
- array = array.concat(drawParams['ofd:DrawParam']);
281
- for (const item of array) {
282
- if (item) {
283
- drawParamResObj[item['@_ID']] = {
284
- 'LineWidth': item['@_LineWidth'],
285
- 'FillColor': item['ofd:FillColor'] ? item['ofd:FillColor']['@_Value'] : '',
286
- 'StrokeColor': item['ofd:StrokeColor'] ? item['ofd:StrokeColor']['@_Value'] : "",
287
- 'relative': item['@_Relative'],
288
- };
289
- }
290
- }
291
- }
292
- return drawParamResObj;
293
- }
294
-
295
- const getMultiMediaRes = async function (zip, res, doc) {
296
- const multiMedias = res['ofd:MultiMedias'];
297
- let multiMediaResObj = {};
298
- if (multiMedias) {
299
- let array = [];
300
- array = array.concat(multiMedias['ofd:MultiMedia']);
301
- for (const item of array) {
302
- if (item) {
303
- let file = item['ofd:MediaFile'];
304
- if (res['@_BaseLoc']) {
305
- if (file.indexOf(res['@_BaseLoc']) === -1) {
306
- file = `${res['@_BaseLoc']}/${file}`
307
- }
308
- }
309
- if (file.indexOf(doc) === -1) {
310
- file = `${doc}/${file}`
311
- }
312
- if (item['@_Type'].toLowerCase() === 'image') {
313
- const format = item['@_Format'];
314
- const ext = getExtensionByPath(file);
315
- if ((format && (format.toLowerCase() === 'gbig2' || format.toLowerCase() === 'jb2')) || ext && (ext.toLowerCase() === 'jb2' || ext.toLowerCase() === 'gbig2')) {
316
- const jbig2 = await parseJbig2ImageFromZip(zip, file);
317
- multiMediaResObj[item['@_ID']] = jbig2;
318
- } else {
319
- const img = await parseOtherImageFromZip(zip, file);
320
- multiMediaResObj[item['@_ID']] = {img, 'format': 'png'};
321
- }
322
- } else {
323
- multiMediaResObj[item['@_ID']] = file;
324
- }
325
- }
326
- }
327
- }
328
- return multiMediaResObj;
329
- }
330
-
331
- const parsePage = async function (zip, obj, doc) {
332
- let pagePath = obj['@_BaseLoc'];
333
- if (pagePath.indexOf(doc) == -1) {
334
- pagePath = `${doc}/${pagePath}`;
335
- }
336
- const data = await getJsonFromXmlContent(zip, pagePath);
337
- let pageObj = {};
338
- pageObj[obj['@_ID']] = {'json': data['json']['ofd:Page'], 'xml': data['xml']};
339
- return pageObj;
340
- }
341
-
342
- const getSignature = async function (zip, signatures, doc) {
343
- // 签章解析依赖 ASN.1、国密算法和证书校验链路。在线预览先跳过签章校验,
344
- // 以免个别签章解析失败阻断正文页渲染;业务如需验签可在服务端独立处理。
345
- void zip;
346
- void signatures;
347
- void doc;
348
- return [];
349
- }
350
-
351
- const getSealDocumentObj = function () {
352
- return Promise.resolve([]);
353
- }
354
-
355
- const getJsonFromXmlContent = async function (zip, xmlName) {
356
- return new Promise((resolve, reject) => {
357
- zip.files[xmlName].async('string').then(function (content) {
358
- ensureBrowserGlobal();
359
- let ops = {
360
- attributeNamePrefix: "@_",
361
- ignoreAttributes: false,
362
- parseNodeValue: false,
363
- trimValues: false
364
- };
365
- let jsonObj = parser.parse(content, ops);
366
- let result = {'xml': content, 'json': jsonObj};
367
- resolve(result);
368
- }, function error(e) {
369
- reject(e);
370
- })
371
- });
372
- }
373
-
374
- const parseJbig2ImageFromZip = async function (zip, name) {
375
- return new Promise((resolve, reject) => {
376
- zip.files[name].async('uint8array').then(function (bytes) {
377
- let jbig2 = new Jbig2Image();
378
- const img = jbig2.parse(bytes);
379
- resolve({img, width: jbig2.width, height: jbig2.height, format: 'gbig2'});
380
- }, function error(e) {
381
- reject(e);
382
- })
383
- });
384
- }
385
-
386
- const parseOtherImageFromZip = async function (zip, name) {
387
- return new Promise((resolve, reject) => {
388
- zip.files[name].async('base64').then(function (bytes) {
389
- const img = 'data:image/png;base64,' + bytes;
390
- resolve(img);
391
- }, function error(e) {
392
- reject(e);
393
- })
394
- });
395
- }