forked from VolodymyrBaydalka/docxjs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocx-preview.ts
58 lines (52 loc) · 1.72 KB
/
docx-preview.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { WordDocument } from './word-document';
import { DocumentParser } from './document-parser';
import { HtmlRenderer } from './html-renderer';
export interface Options {
inWrapper: boolean;
ignoreWidth: boolean;
ignoreHeight: boolean;
ignoreFonts: boolean;
breakPages: boolean;
debug: boolean;
experimental: boolean;
className: string;
trimXmlDeclaration: boolean;
renderHeaders: boolean;
renderFooters: boolean;
renderFootnotes: boolean;
renderEndnotes: boolean;
ignoreLastRenderedPageBreak: boolean;
useBase64URL: boolean;
useMathMLPolyfill: boolean;
renderChanges: boolean;
}
export const defaultOptions: Options = {
ignoreHeight: false,
ignoreWidth: false,
ignoreFonts: false,
breakPages: true,
debug: false,
experimental: false,
className: "docx",
inWrapper: true,
trimXmlDeclaration: true,
ignoreLastRenderedPageBreak: true,
renderHeaders: true,
renderFooters: true,
renderFootnotes: true,
renderEndnotes: true,
useBase64URL: false,
useMathMLPolyfill: false,
renderChanges: false
}
export function praseAsync(data: Blob | any, userOptions: Partial<Options> = null): Promise<any> {
const ops = { ...defaultOptions, ...userOptions };
return WordDocument.load(data, new DocumentParser(ops), ops);
}
export async function renderAsync(data: Blob | any, bodyContainer: HTMLElement, styleContainer: HTMLElement = null, userOptions: Partial<Options> = null): Promise<any> {
const ops = { ...defaultOptions, ...userOptions };
const renderer = new HtmlRenderer(window.document);
const doc = await WordDocument.load(data, new DocumentParser(ops), ops)
renderer.render(doc, bodyContainer, styleContainer, ops);
return doc;
}