@syzlm/ofdparser 0.0.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 (213) hide show
  1. package/.babelrc +14 -0
  2. package/.eslintignore +2 -0
  3. package/.eslintrc.json +18 -0
  4. package/.prettierrc.json +9 -0
  5. package/dist/OFD.d.ts +8 -0
  6. package/dist/Pages.d.ts +7 -0
  7. package/dist/RootDocumnet.d.ts +1 -0
  8. package/dist/bundle.cjs.js +64123 -0
  9. package/dist/bundle.esm.js +64115 -0
  10. package/dist/bundle.iife.js +14743 -0
  11. package/dist/bundle.umd.js +64045 -0
  12. package/dist/constant/index.d.ts +7 -0
  13. package/dist/constant.d.ts +6 -0
  14. package/dist/core/ofd-core/Annotations/AnnotationsXml.d.ts +16 -0
  15. package/dist/core/ofd-core/Asn.1Utils.d.ts +47 -0
  16. package/dist/core/ofd-core/Documents/DocumentResXml.d.ts +15 -0
  17. package/dist/core/ofd-core/Documents/DocumnetXml.d.ts +25 -0
  18. package/dist/core/ofd-core/Documents/PublicResXml.d.ts +15 -0
  19. package/dist/core/ofd-core/OFDElement.d.ts +232 -0
  20. package/dist/core/ofd-core/Ofd/OFDXml.d.ts +19 -0
  21. package/dist/core/ofd-core/Pages/PageXml.d.ts +20 -0
  22. package/dist/core/ofd-core/Signatures/Signatures.d.ts +20 -0
  23. package/dist/core/ofd-core/TemplatePages/TemplatePages.d.ts +20 -0
  24. package/dist/core/ofd-core/constant.d.ts +29 -0
  25. package/dist/core/ofd-core/utils.d.ts +21 -0
  26. package/dist/dicom/dicom.d.ts +15 -0
  27. package/dist/dicom/index.d.ts +1 -0
  28. package/dist/errors/ErrorHandle.d.ts +6 -0
  29. package/dist/errors/ErrorMsg.d.ts +16 -0
  30. package/dist/errors/FetchErrors.d.ts +4 -0
  31. package/dist/errors/MimeError.d.ts +4 -0
  32. package/dist/errors/OFDErrors.d.ts +4 -0
  33. package/dist/errors/UnzipErrors.d.ts +4 -0
  34. package/dist/errors/XmlErrors.d.ts +4 -0
  35. package/dist/errors/error-msg.d.ts +9 -0
  36. package/dist/es.d.ts +2 -0
  37. package/dist/index.d.ts +6 -0
  38. package/dist/lib/ParseFile.d.ts +7 -0
  39. package/dist/lib/UnitCoversion.d.ts +31 -0
  40. package/dist/lib/asn1/Asn.1.d.ts +34 -0
  41. package/dist/lib/asn1/Stream.d.ts +27 -0
  42. package/dist/lib/asn1/asn1.d.ts +4 -0
  43. package/dist/lib/asn1/base64.d.ts +4 -0
  44. package/dist/lib/asn1/hex.d.ts +5 -0
  45. package/dist/lib/asn1/index.d.ts +5 -0
  46. package/dist/lib/asn1/int10.d.ts +34 -0
  47. package/dist/lib/asn1/oids.d.ts +2 -0
  48. package/dist/lib/asn1/string-cut.d.ts +2 -0
  49. package/dist/lib/decode-html.d.ts +7 -0
  50. package/dist/lib/fetch.d.ts +17 -0
  51. package/dist/lib/is-element.d.ts +5 -0
  52. package/dist/lib/load-files.d.ts +3 -0
  53. package/dist/lib/load-opentype.d.ts +34 -0
  54. package/dist/lib/load-script.d.ts +1 -0
  55. package/dist/lib/mime.d.ts +8 -0
  56. package/dist/lib/read-buffer.d.ts +2 -0
  57. package/dist/lib/toFixeds.d.ts +7 -0
  58. package/dist/libs/Asn.1Utils.d.ts +47 -0
  59. package/dist/libs/asn1/Asn.1.d.ts +34 -0
  60. package/dist/libs/asn1/Stream.d.ts +27 -0
  61. package/dist/libs/asn1/asn1.d.ts +4 -0
  62. package/dist/libs/asn1/base64.d.ts +4 -0
  63. package/dist/libs/asn1/hex.d.ts +5 -0
  64. package/dist/libs/asn1/index.d.ts +5 -0
  65. package/dist/libs/asn1/int10.d.ts +34 -0
  66. package/dist/libs/asn1/oids.d.ts +2 -0
  67. package/dist/libs/asn1/string-cut.d.ts +2 -0
  68. package/dist/libs/decode-html.d.ts +7 -0
  69. package/dist/libs/fetch.d.ts +17 -0
  70. package/dist/libs/mime.d.ts +8 -0
  71. package/dist/libs/ofdArray.d.ts +10 -0
  72. package/dist/libs/ofdImageObject.d.ts +9 -0
  73. package/dist/libs/ofdLayer.d.ts +3 -0
  74. package/dist/libs/ofdName.d.ts +17 -0
  75. package/dist/libs/ofdPathObject.d.ts +11 -0
  76. package/dist/libs/ofdTextObject.d.ts +6 -0
  77. package/dist/libs/parseAnnotation.d.ts +5 -0
  78. package/dist/libs/parseColor.d.ts +5 -0
  79. package/dist/libs/parsePageArea.d.ts +17 -0
  80. package/dist/libs/parser-elements.d.ts +8 -0
  81. package/dist/libs/parserElements.d.ts +8 -0
  82. package/dist/libs/pipeExtensions.d.ts +4 -0
  83. package/dist/libs/read-buffer.d.ts +2 -0
  84. package/dist/main.d.ts +15 -0
  85. package/dist/ofd/ConverterDpi.d.ts +16 -0
  86. package/dist/ofd/index.d.ts +1 -0
  87. package/dist/ofd/ofd-utils.d.ts +137 -0
  88. package/dist/ofd/ofd.d.ts +35 -0
  89. package/dist/ofd/parse-ofd.d.ts +18 -0
  90. package/dist/ofd/render.d.ts +18 -0
  91. package/dist/ofd/svg-image.d.ts +12 -0
  92. package/dist/ofd/svg-path.d.ts +5 -0
  93. package/dist/ofd/svg-text.d.ts +8 -0
  94. package/dist/ofd.parse.d.ts +6 -0
  95. package/dist/ofd.xml.d.ts +1 -0
  96. package/dist/ofdParse.d.ts +6 -0
  97. package/dist/pipe/annotations.d.ts +13 -0
  98. package/dist/pipe/attachments.d.ts +13 -0
  99. package/dist/pipe/commonData.d.ts +18 -0
  100. package/dist/pipe/customTags.d.ts +14 -0
  101. package/dist/pipe/extensions.d.ts +14 -0
  102. package/dist/pipe/output.d.ts +7 -0
  103. package/dist/pipe/pages.d.ts +13 -0
  104. package/dist/pipe/permissions.d.ts +14 -0
  105. package/dist/pipe/pipeline.d.ts +63 -0
  106. package/dist/pipe/startPipe.d.ts +11 -0
  107. package/dist/xml/index.d.ts +2 -0
  108. package/dist/xml/render.d.ts +6 -0
  109. package/dist/xml/xml.d.ts +18 -0
  110. package/package.json +47 -0
  111. package/public/index.html +75 -0
  112. package/public/opentype.min.js +2 -0
  113. package/rollup.config.dev.mjs +47 -0
  114. package/rollup.config.mjs +70 -0
  115. package/src/constant/index.ts +13 -0
  116. package/src/core/ofd-core/Annotations/Annotation.km +206 -0
  117. package/src/core/ofd-core/Annotations/Annotations.km +59 -0
  118. package/src/core/ofd-core/Annotations/Annotations.md +13 -0
  119. package/src/core/ofd-core/Annotations/AnnotationsXml.ts +114 -0
  120. package/src/core/ofd-core/Asn.1Utils.ts +225 -0
  121. package/src/core/ofd-core/Documents/DocumentResXml.ts +55 -0
  122. package/src/core/ofd-core/Documents/Documnet.km +862 -0
  123. package/src/core/ofd-core/Documents/DocumnetXml.ts +118 -0
  124. package/src/core/ofd-core/Documents/Documnets.md +296 -0
  125. package/src/core/ofd-core/Documents/PublicResXml.ts +63 -0
  126. package/src/core/ofd-core/Documents//345/233/276/345/261/202/346/270/262/346/237/223/351/241/272/345/272/217.png +0 -0
  127. package/src/core/ofd-core/Documents//350/241/25022/347/272/277/346/235/241/350/277/236/346/216/245/346/240/267/345/274/217.png +0 -0
  128. package/src/core/ofd-core/Documents//350/241/25023/347/272/277/346/235/241/350/231/232/347/272/277/346/240/267/345/274/217.png +0 -0
  129. package/src/core/ofd-core/Documents//350/241/25023/347/273/223/345/220/210/347/202/271/351/225/277/345/272/246.png +0 -0
  130. package/src/core/ofd-core/Documents//350/241/25024/347/272/277/346/235/241/347/253/257/347/202/271/346/240/267/345/274/217.png +0 -0
  131. package/src/core/ofd-core/Documents//351/241/265/350/276/271/347/225/214/345/261/202/346/254/241/347/273/223/346/236/204.png +0 -0
  132. package/src/core/ofd-core/OFDElement.ts +724 -0
  133. package/src/core/ofd-core/Ofd/CT_DocInfo.km +197 -0
  134. package/src/core/ofd-core/Ofd/OFD.km +114 -0
  135. package/src/core/ofd-core/Ofd/OFD.md +99 -0
  136. package/src/core/ofd-core/Ofd/OFDXml.ts +69 -0
  137. package/src/core/ofd-core/Pages/PAGE.md +40 -0
  138. package/src/core/ofd-core/Pages/PageXml.ts +59 -0
  139. package/src/core/ofd-core/Signatures/Signature.km +308 -0
  140. package/src/core/ofd-core/Signatures/Signature.md +21 -0
  141. package/src/core/ofd-core/Signatures/Signatures.km +315 -0
  142. package/src/core/ofd-core/Signatures/Signatures.md +24 -0
  143. package/src/core/ofd-core/Signatures/Signatures.ts +247 -0
  144. package/src/core/ofd-core/TemplatePages/TemplatePages.ts +56 -0
  145. package/src/core/ofd-core/asn.md +60 -0
  146. package/src/core/ofd-core/constant.ts +35 -0
  147. package/src/core/ofd-core/index.d.ts +867 -0
  148. package/src/core/ofd-core/utils.ts +86 -0
  149. package/src/dicom/dicom.ts +42 -0
  150. package/src/dicom/index.ts +1 -0
  151. package/src/errors/ErrorHandle.ts +14 -0
  152. package/src/errors/FetchErrors.ts +8 -0
  153. package/src/errors/MimeError.ts +9 -0
  154. package/src/errors/OFDErrors.ts +11 -0
  155. package/src/errors/UnzipErrors.ts +9 -0
  156. package/src/errors/XmlErrors.ts +11 -0
  157. package/src/errors/error-msg.ts +17 -0
  158. package/src/es.ts +3 -0
  159. package/src/global.d.ts +7 -0
  160. package/src/index.ts +7 -0
  161. package/src/lib/ParseFile.ts +12 -0
  162. package/src/lib/README.md +69 -0
  163. package/src/lib/UnitCoversion.ts +55 -0
  164. package/src/lib/asn1/Asn.1.ts +284 -0
  165. package/src/lib/asn1/README.md +1 -0
  166. package/src/lib/asn1/Stream.ts +314 -0
  167. package/src/lib/asn1/asn1.ts +120 -0
  168. package/src/lib/asn1/base64.ts +97 -0
  169. package/src/lib/asn1/hex.ts +60 -0
  170. package/src/lib/asn1/index.ts +5 -0
  171. package/src/lib/asn1/int10.ts +103 -0
  172. package/src/lib/asn1/oids.ts +6164 -0
  173. package/src/lib/asn1/string-cut.ts +8 -0
  174. package/src/lib/decode-html.ts +37 -0
  175. package/src/lib/fetch.ts +70 -0
  176. package/src/lib/is-element.ts +13 -0
  177. package/src/lib/jbig/README.md +1 -0
  178. package/src/lib/jbig/arithmetic_decoder.js +184 -0
  179. package/src/lib/jbig/base_stream.js +117 -0
  180. package/src/lib/jbig/ccitt.js +1068 -0
  181. package/src/lib/jbig/ccitt_stream.js +60 -0
  182. package/src/lib/jbig/compatibility.js +108 -0
  183. package/src/lib/jbig/core_utils.js +591 -0
  184. package/src/lib/jbig/decode_stream.js +184 -0
  185. package/src/lib/jbig/is_node.js +28 -0
  186. package/src/lib/jbig/jbig2.js +2582 -0
  187. package/src/lib/jbig/jbig2_stream.js +78 -0
  188. package/src/lib/jbig/primitives.js +441 -0
  189. package/src/lib/jbig/stream.js +101 -0
  190. package/src/lib/jbig/util.js +1231 -0
  191. package/src/lib/load-files.ts +26 -0
  192. package/src/lib/load-opentype.ts +161 -0
  193. package/src/lib/load-script.ts +33 -0
  194. package/src/lib/mime.ts +97 -0
  195. package/src/lib/read-buffer.ts +19 -0
  196. package/src/lib/toFixeds.ts +56 -0
  197. package/src/ofd/ConverterDpi.ts +35 -0
  198. package/src/ofd/OFD.md +38 -0
  199. package/src/ofd/TODO.md +10 -0
  200. package/src/ofd/index.ts +1 -0
  201. package/src/ofd/ofd-utils.ts +627 -0
  202. package/src/ofd/ofd.demo.md +12 -0
  203. package/src/ofd/ofd.ts +200 -0
  204. package/src/ofd/ofdxml.km +162 -0
  205. package/src/ofd/parse-ofd.ts +103 -0
  206. package/src/ofd/render.ts +393 -0
  207. package/src/ofd/svg-image.ts +318 -0
  208. package/src/ofd/svg-path.ts +283 -0
  209. package/src/ofd/svg-text.ts +272 -0
  210. package/src/xml/index.ts +3 -0
  211. package/src/xml/render.ts +171 -0
  212. package/src/xml/xml.ts +136 -0
  213. package/tsconfig.json +21 -0
@@ -0,0 +1,137 @@
1
+ import { Res } from '../core/ofd-core';
2
+ /**
3
+ * @desc 字体family
4
+ */
5
+ export declare const FONT_FAMILY: {
6
+ 楷体: string;
7
+ kaiti: string;
8
+ Kai: string;
9
+ simsun: string;
10
+ 宋体: string;
11
+ 黑体: string;
12
+ 仿宋: string;
13
+ 小标宋体: string;
14
+ 方正小标宋_gbk: string;
15
+ 仿宋_gb2312: string;
16
+ 楷体_gb2312: string;
17
+ 华文楷体: string;
18
+ 华文中宋: string;
19
+ couriernew: string;
20
+ 'courier new': string;
21
+ };
22
+ export declare const pageZIndex: {
23
+ Background: number;
24
+ Body: number;
25
+ WatermarkAnnot: number;
26
+ Foreground: number;
27
+ Stamp: number;
28
+ Watermark: number;
29
+ };
30
+ /**
31
+ * 设置style样式文件
32
+ * @param ele
33
+ * @param styles
34
+ */
35
+ export declare const setStyle: (ele: HTMLElement | SVGImageElement | SVGSVGElement, styles: {
36
+ [k: string]: string | number;
37
+ }) => void;
38
+ export declare const converterDpi: (p: string | number) => number;
39
+ export declare const parseCtm: (ctm: string) => string[] | null;
40
+ export declare const parseAbbreviatedData: (abbreviatedData: string) => string | null;
41
+ /**
42
+ * 格式化ST_Box数据
43
+ * @param ST_Box
44
+ * @returns
45
+ */
46
+ export declare const formatSTBox: (a: string, shouldAds?: boolean) => {
47
+ left: number;
48
+ top: number;
49
+ width: number;
50
+ height: number;
51
+ };
52
+ export declare const getRes: (Res: Res[] | null, resId: string, type: string) => Res | null;
53
+ export declare const getFont: (Fonts: Res[] | null, resId: string) => Res | null;
54
+ export declare const getDrawParam: (DrawParam: Res[] | null, resId: string) => Res | null;
55
+ export declare const getMultiMedia: (MultiMedias: Res[] | null, resId: string) => Res | null;
56
+ /**
57
+ * 替换html可识别family
58
+ * @param fontObj
59
+ * @returns
60
+ */
61
+ export declare const getFontFamily: (fontInfo?: Res) => any;
62
+ /**
63
+ * 格式化颜色
64
+ * @param color
65
+ * @returns
66
+ */
67
+ export declare const parseColor: (color: string) => string;
68
+ /**
69
+ *
70
+ * @param textCodes
71
+ * @param cgTransform
72
+ * @param ctm
73
+ * @param boundary
74
+ * @param compositeObjectBoundary
75
+ * @param compositeObjectCTM
76
+ * @returns
77
+ */
78
+ export declare const calTextPoint: (textCode: {
79
+ [k: string]: any;
80
+ }, cgTransform: {
81
+ [k: string]: any;
82
+ }, ctm: string | string[], Boundary: string, compositeObjectCTM?: any, isSelfFont?: boolean) => any[];
83
+ export declare const drawBMPImage: (d: string) => Promise<string>;
84
+ /**
85
+ * 绘制自定义字体
86
+ * @param path
87
+ * @param horiUnderlinePosition
88
+ * @param units_per_EM
89
+ * @param xsize
90
+ * @param ysize
91
+ * @param color
92
+ * @param defaultFillOpacity
93
+ * @returns
94
+ */
95
+ export declare const drawGlyph: (path: string, horiUnderlinePosition: string, units_per_EM: number, xsize: number, ysize: number, color: string, defaultFillOpacity: string) => {
96
+ img: SVGSVGElement;
97
+ yScale: number;
98
+ };
99
+ /**
100
+ * @description 判断两个矩形是否交叉
101
+ * @param rect1
102
+ * @param rect2
103
+ * @returns
104
+ */
105
+ export declare function doRectanglesIntersect(rect1: {
106
+ left: number;
107
+ top: number;
108
+ width: number;
109
+ height: number;
110
+ }, rect2: {
111
+ left: number;
112
+ top: number;
113
+ width: number;
114
+ height: number;
115
+ }): boolean;
116
+ /**
117
+ * @description 计算两个矩形交叉位置
118
+ * @param rect1
119
+ * @param rect2
120
+ * @returns
121
+ */
122
+ export declare function getIntersection(rect1: {
123
+ left: number;
124
+ top: number;
125
+ width: number;
126
+ height: number;
127
+ }, rect2: {
128
+ left: number;
129
+ top: number;
130
+ width: number;
131
+ height: number;
132
+ }): {
133
+ left: number;
134
+ top: number;
135
+ width: number;
136
+ height: number;
137
+ } | null;
@@ -0,0 +1,35 @@
1
+ import { ResultData } from '../core/ofd-core';
2
+ interface Options {
3
+ file: string | File | ArrayBuffer;
4
+ ofd?: string | File | ArrayBuffer;
5
+ content?: Element;
6
+ id?: string;
7
+ fail?: (err: Error) => undefined;
8
+ success?: (s: HTMLElement) => undefined;
9
+ screenWidth?: number;
10
+ requestOptions?: undefined | {
11
+ [key: string]: any;
12
+ };
13
+ requestData?: undefined | {
14
+ [key: string]: any;
15
+ };
16
+ responseFilter?: (key: {
17
+ [key: string]: string | number;
18
+ }) => string;
19
+ }
20
+ /**
21
+ * 直接输出渲染节点
22
+ * @param param0
23
+ * @returns
24
+ */
25
+ export declare const getSVGDoms: (r: Options) => Promise<HTMLElement>;
26
+ /**
27
+ * 输出格式化OFD JSON
28
+ * @param param0
29
+ * @returns
30
+ */
31
+ declare const OFDParse: (p: Options) => Promise<{
32
+ code: number;
33
+ data: ResultData;
34
+ }>;
35
+ export default OFDParse;
@@ -0,0 +1,18 @@
1
+ import JSZip from 'jszip';
2
+ import { ResultData } from '../core/ofd-core';
3
+ interface OFDXML {
4
+ 'OFD.xml': any;
5
+ [key: string]: any;
6
+ }
7
+ /**
8
+ * @description 解析ofd.xml
9
+ */
10
+ /**
11
+ * @description 解析ofd xml 文件
12
+ * @param data OFD解压出来的文件
13
+ * @param zip jszip 实例化对象
14
+ * @param isParse true:直接返回解析json,false 返回dom节点
15
+ * @param isSeal true:签章渲染,false:非签章渲染
16
+ */
17
+ declare const parse: (data: OFDXML, zip: JSZip, defaultWidth?: number, isParse?: boolean, isSeal?: boolean) => Promise<HTMLElement | ResultData>;
18
+ export default parse;
@@ -0,0 +1,18 @@
1
+ import { ResultData, Page } from '../core/ofd-core/index.d';
2
+ /**
3
+ * 渲染OFD
4
+ * @param data OFD元数据
5
+ * @param zip 解压
6
+ * @param defaultWall 最大宽度
7
+ * @param isSeal 是否是签章渲染
8
+ */
9
+ export declare const OFDRender: (data: ResultData, defaultWidth?: number, isSeal?: boolean) => HTMLDivElement;
10
+ /**
11
+ * 序列化绘制 Template pages
12
+ * @param pages
13
+ * @param data
14
+ * @param zIndex
15
+ * @param pageDivs
16
+ */
17
+ export declare const renderTplsPage: (pages: Page[], data: ResultData, zIndex: number) => any[];
18
+ export declare const renderPage: (page: Page, data: ResultData, content?: HTMLElement) => any[];
@@ -0,0 +1,12 @@
1
+ import { ResultData, LayerPageBlock, StampAnnot } from '../core/ofd-core/index.d';
2
+ interface PictureInfo {
3
+ type: string;
4
+ data: Uint8Array;
5
+ width: string;
6
+ height: string;
7
+ }
8
+ declare const renderImageObject: (imageObject: LayerPageBlock & {
9
+ [k: string]: any;
10
+ }, data: ResultData, content: HTMLElement, isStampAnnot?: boolean, StampId?: string, PageRef?: string, compositeObjectCTM?: any) => Promise<false | undefined>;
11
+ export declare const renderBitImage: (pictureInfo: PictureInfo, Box: StampAnnot, content: HTMLElement) => HTMLCanvasElement | undefined;
12
+ export default renderImageObject;
@@ -0,0 +1,5 @@
1
+ import { ResultData, LayerPageBlock } from '../core/ofd-core/index.d';
2
+ declare const renderPathObject: (pathObject: LayerPageBlock & {
3
+ [k: string]: any;
4
+ }, data: ResultData, content: HTMLElement, drawLineWidth?: number, drawFillColor?: string, drawStrokeColor?: string, isStampAnnot?: boolean, compositeObjectAlpha?: any, compositeObjectBoundary?: any, compositeObjectCTM?: any) => SVGSVGElement | undefined;
5
+ export default renderPathObject;
@@ -0,0 +1,8 @@
1
+ import { ResultData, LayerPageBlock } from '../core/ofd-core/index.d';
2
+ /**
3
+ * 绘制Text
4
+ */
5
+ declare const renderTextObject: (info: LayerPageBlock & {
6
+ [k: string]: any;
7
+ }, data: ResultData, content: HTMLElement, drawFillColor?: string, drawStrokeColor?: string) => void;
8
+ export default renderTextObject;
@@ -0,0 +1,6 @@
1
+ import type { Result } from './types.d';
2
+ /**
3
+ * @description 解压OFD文件
4
+ * @param file
5
+ */
6
+ export declare const OFDInit: (file: string | File | ArrayBuffer) => Promise<Result>;
@@ -0,0 +1 @@
1
+ export default OFD;
@@ -0,0 +1,6 @@
1
+ import type { Result } from './types';
2
+ /**
3
+ * @description 解压OFD文件
4
+ * @param file
5
+ */
6
+ export declare const OFDInit: (file: string | File | ArrayBuffer) => Promise<Result>;
@@ -0,0 +1,13 @@
1
+ import Base from './pipeline';
2
+ import type { PipeLineData } from './pipeline';
3
+ /**
4
+ * @description Annotations数据
5
+ * ```
6
+ *
7
+ * ```
8
+ */
9
+ declare class Annotations extends Base {
10
+ constructor();
11
+ resolveData(data: PipeLineData): void;
12
+ }
13
+ export default Annotations;
@@ -0,0 +1,13 @@
1
+ import Base from './pipeline';
2
+ import type { PipeLineData } from './pipeline';
3
+ /**
4
+ * @description Attachments附件列表数据
5
+ * ```
6
+ *
7
+ * ```
8
+ */
9
+ declare class Attachments extends Base {
10
+ constructor();
11
+ resolveData(data: PipeLineData): void;
12
+ }
13
+ export default Attachments;
@@ -0,0 +1,18 @@
1
+ import Base from './pipeline';
2
+ import type { PipeLineData } from './pipeline';
3
+ /**
4
+ * @description 文档公共数据
5
+ * ```
6
+ * MaxUnitID: 当前文档中所有对象标识最大值,初始值为0。MaxUnitID主要用于文档编辑,在向文档中新增加一个对象时,需要分配一个新的标识,新标识取值宜为MaxUnitID+1,同时需要修改此MaxUnitID值。
7
+ * PageArea:指定该文档页面区域的默认大小和位置。
8
+ * PublicRes:公共资源序列,每个节点指向OFD包内的一个资源描述文档。
9
+ * DocumnetRes:文档资源序列,每个节点指向OFD包内的一个资源描述文档。
10
+ * TemplatePage:模版页序列,为一系列模版页集合,模版页内容结构和普通页相同。
11
+ * DefaultCS:引用在资源文件中定义的颜色空间标识。
12
+ * ```
13
+ */
14
+ declare class CommonData extends Base {
15
+ constructor();
16
+ resolveData(data: PipeLineData): void;
17
+ }
18
+ export default CommonData;
@@ -0,0 +1,14 @@
1
+ import Base from './pipeline';
2
+ import type { PipeLineData } from './pipeline';
3
+ /**
4
+ * @description CustomTags自定义标引文件列表
5
+ * 外部系统或用户可以添加自定义的标记和信息,从而达到与其他系统、数据进行交互的目的并扩展应用。一个文档可以带有多个自定义标引。
6
+ * ```
7
+ *
8
+ * ```
9
+ */
10
+ declare class CustomTags extends Base {
11
+ constructor();
12
+ resolveData(data: PipeLineData): void;
13
+ }
14
+ export default CustomTags;
@@ -0,0 +1,14 @@
1
+ import Base from './pipeline';
2
+ import type { PipeLineData } from './pipeline';
3
+ /**
4
+ * @description Extensions自定义标引文件列表
5
+ * 扩展信息列表的人口点在 7.5 文档根节点中定义。扩展信息列表文件的根节点名为 Extensions,其下由0到多个扩展信息节点(Extension)组成,扩展信息列表的根节点结构如图 83 所示。
6
+ * ```
7
+ *
8
+ * ```
9
+ */
10
+ declare class Extensions extends Base {
11
+ constructor();
12
+ resolveData(data: PipeLineData): void;
13
+ }
14
+ export default Extensions;
@@ -0,0 +1,7 @@
1
+ import Base from './pipeline';
2
+ import type { PipeLineData } from './pipeline';
3
+ declare class Output extends Base<PipeLineData> {
4
+ constructor();
5
+ resolveData(data: PipeLineData): void;
6
+ }
7
+ export default Output;
@@ -0,0 +1,13 @@
1
+ import Base from './pipeline';
2
+ import type { PipeLineData } from './pipeline';
3
+ /**
4
+ * @description Pages数据
5
+ * ```
6
+ *
7
+ * ```
8
+ */
9
+ declare class Pages extends Base {
10
+ constructor();
11
+ resolveData(data: PipeLineData): void;
12
+ }
13
+ export default Pages;
@@ -0,0 +1,14 @@
1
+ import Base from './pipeline';
2
+ import type { PipeLineData } from './pipeline';
3
+ /**
4
+ * @description Permissions
5
+ * 本标准支持设置文档权限声明(Permissions)节点,以达到文档防扩散等应用目的。文档权限声明结构如图 9所示。
6
+ * ```
7
+ *
8
+ * ```
9
+ */
10
+ declare class Permissions extends Base {
11
+ constructor();
12
+ resolveData(data: PipeLineData): void;
13
+ }
14
+ export default Permissions;
@@ -0,0 +1,63 @@
1
+ import type { Elements } from 'src/types.d';
2
+ export type PipeLineData = {
3
+ rootElements: Elements[];
4
+ OFDDocumnet?: any;
5
+ [k: string]: any;
6
+ };
7
+ type Pipeline<T = any> = {
8
+ /**
9
+ * 实现该方法可以将数据通过管道一层层传递下去
10
+ * @param data
11
+ */
12
+ push(data?: PipeLineData): void;
13
+ /**
14
+ * 将多节管道链接起来
15
+ * e.g.
16
+ * const app = new BaseApp();
17
+ * app.pipe(new TestApp1()).pipe(new TestApp2()).pipe(new TestApp3()).pipe(new Output()).pipe(new End())
18
+ * @param _next
19
+ */
20
+ pipe(_next: Pipeline<T>): Pipeline<T>;
21
+ /**
22
+ * 用于接受从上一节管道传递下来的数据,可进行加工后传递到下一节管道
23
+ * @param data
24
+ */
25
+ resolveData(data: PipeLineData): void;
26
+ /**
27
+ * 获取最终数据
28
+ * @param data
29
+ */
30
+ getCompleteData(): PipeLineData;
31
+ };
32
+ declare class Base<P = PipeLineData> implements Pipeline<P> {
33
+ constructor(data?: PipeLineData);
34
+ protected data: any;
35
+ /**
36
+ * 仅内部使用,下一节管道的引用
37
+ */
38
+ protected next: Pipeline<PipeLineData> | undefined;
39
+ /**
40
+ * 接受到数据后,使用 resolveData 处理获得新数据后,将新数据推送到下一节管道
41
+ * @param data
42
+ */
43
+ push(data: PipeLineData): void;
44
+ /**
45
+ * 链接管道
46
+ * 让 pipe 的返回值始终是下一节管道的引用,这样就可以链式调用
47
+ * @param _next
48
+ * @returns
49
+ */
50
+ pipe(_next: Pipeline<P>): Pipeline<P>;
51
+ /**
52
+ * 数据处理,返回最新的数据对象
53
+ * @param data
54
+ * @returns
55
+ */
56
+ resolveData(data: PipeLineData): void;
57
+ /**
58
+ * 数据处理,返回最新的数据对象
59
+ * @returns
60
+ */
61
+ getCompleteData(): any;
62
+ }
63
+ export default Base;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @description 第一节管道
3
+ */
4
+ import Base, { PipeLineData } from './pipeline';
5
+ /**
6
+ * @description 第一节水管传入源数据
7
+ */
8
+ declare class InputPipe extends Base<PipeLineData> {
9
+ constructor(data: PipeLineData);
10
+ }
11
+ export default InputPipe;
@@ -0,0 +1,2 @@
1
+ export { default } from './xml';
2
+ export { default as render } from './render';
@@ -0,0 +1,6 @@
1
+ import { Element } from 'xml-js';
2
+ export declare const elementRender: (w: Element[], d: HTMLElement) => boolean;
3
+ export declare const textRender: (a: Element, d: HTMLElement) => void;
4
+ export declare const cdataRender: (a: Element, d: HTMLElement) => void;
5
+ declare const render: (a: any) => HTMLDivElement;
6
+ export default render;
@@ -0,0 +1,18 @@
1
+ interface Options {
2
+ file: string | File | ArrayBuffer;
3
+ content?: Element;
4
+ id?: string;
5
+ success?: (k: Element) => any;
6
+ fail?: (e: Error) => any;
7
+ requestOptions?: undefined | {
8
+ [key: string]: any;
9
+ };
10
+ requestData?: undefined | {
11
+ [key: string]: any;
12
+ };
13
+ responseFilter?: (key: {
14
+ [key: string]: string | number;
15
+ }) => string;
16
+ }
17
+ declare const _default: ({ file, content, id, ...restOptions }: Options) => Promise<unknown>;
18
+ export default _default;
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@syzlm/ofdparser",
3
+ "version": "0.0.1",
4
+ "description": "ofd javascript解析器",
5
+ "main": "dist/bundle.cjs.js",
6
+ "module": "dist/bundle.esm.js",
7
+ "browser": "dist/bundle.umd.js",
8
+ "types": "dist/index.d.ts",
9
+ "scripts": {
10
+ "test": "echo \"Error: no test specified\" && exit 1",
11
+ "build": "rollup -c",
12
+ "dev": "rollup --config rollup.config.dev.mjs -w"
13
+ },
14
+ "keywords": [
15
+ "ofd"
16
+ ],
17
+ "author": "@syzlm",
18
+ "license": "ISC",
19
+ "dependencies": {
20
+ "fontkit": "^2.0.4",
21
+ "jszip": "^3.10.1",
22
+ "xml-js": "^1.6.11"
23
+ },
24
+ "devDependencies": {
25
+ "@babel/core": "^7.26.0",
26
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
27
+ "@babel/plugin-transform-runtime": "^7.25.9",
28
+ "@babel/preset-env": "^7.26.0",
29
+ "@babel/runtime": "^7.26.0",
30
+ "@eslint/js": "^9.17.0",
31
+ "@rollup/plugin-babel": "^6.0.4",
32
+ "@rollup/plugin-commonjs": "^28.0.2",
33
+ "@rollup/plugin-html": "^1.1.0",
34
+ "@rollup/plugin-node-resolve": "^16.0.0",
35
+ "@rollup/plugin-terser": "^0.4.4",
36
+ "@rollup/plugin-typescript": "^12.1.2",
37
+ "eslint": "^9.17.0",
38
+ "globals": "^15.14.0",
39
+ "prettier": "^3.4.2",
40
+ "rollup": "^4.29.1",
41
+ "rollup-plugin-livereload": "^2.0.5",
42
+ "rollup-plugin-serve": "^1.1.1",
43
+ "tslib": "^2.8.1",
44
+ "typescript": "^5.7.2",
45
+ "typescript-eslint": "^8.18.2"
46
+ }
47
+ }
@@ -0,0 +1,75 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh-cn">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Document</title>
8
+ <script src="bundle.umd.js"></script>
9
+ <style>
10
+ html,
11
+ body,
12
+ div {
13
+ margin: 0;
14
+ padding: 0;
15
+ }
16
+
17
+ .input-file {
18
+ position: relative;
19
+ display: flex;
20
+ cursor: pointer;
21
+ width: 100%;
22
+ padding: 10px 0;
23
+ justify-content: center;
24
+ border-bottom: 1px solid #333;
25
+ }
26
+
27
+ .input-file input {
28
+ color: transparent;
29
+ background-color: transparent;
30
+ border: none;
31
+ outline: none;
32
+ width: 100%;
33
+ position: absolute;
34
+ top: 0;
35
+ bottom: 0;
36
+ left: 0;
37
+ font-size: 100px;
38
+ z-index: 2;
39
+ opacity: 0;
40
+ cursor: pointer;
41
+ }
42
+
43
+ #test {
44
+ text-align: center;
45
+ }
46
+ </style>
47
+ </head>
48
+
49
+ <body>
50
+ <div id="input-file">
51
+ <span>请选择文件</span>
52
+ <input type="file" id="file" />
53
+ </div>
54
+ <div id="test"></div>
55
+ <script>
56
+ (function () {
57
+ const showDom = document.querySelector('#test')
58
+
59
+ var inputDom = document.querySelector('#file');
60
+ inputDom.addEventListener('change', function (e) {
61
+ document.querySelector('#test').innerHTML = "正在解析文件..."
62
+ var files = e.target.files;
63
+ if (BEST_OFD && files[0]) {
64
+ console.dir('BEST_OFD:', BEST_OFD)
65
+ BEST_OFD.getSVGDoms({ file: files[0], content: document.querySelector('#test') })
66
+ }
67
+ var readFile = new FileReader();
68
+
69
+ })
70
+
71
+ })()
72
+ </script>
73
+ </body>
74
+
75
+ </html>