abstract-document 6.3.1 → 6.5.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 (175) hide show
  1. package/CHANGELOG.md +25 -7
  2. package/lib/abstract-document/section-elements/table.d.ts +2 -0
  3. package/lib/abstract-document/section-elements/table.d.ts.map +1 -1
  4. package/lib/abstract-document/section-elements/table.js +2 -2
  5. package/lib/abstract-document/section-elements/table.js.map +1 -1
  6. package/lib/abstract-document-exporters/__tests__/{docx2/test-defs/table-of-content-separator.d.ts → pdf/test-defs/page-break-table-with-header.d.ts} +1 -1
  7. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header.d.ts.map +1 -0
  8. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header.js +1529 -0
  9. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header.js.map +1 -0
  10. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/{group.d.ts → page-break-table-with-header2.d.ts} +1 -1
  11. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header2.d.ts.map +1 -0
  12. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header2.js +783 -0
  13. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header2.js.map +1 -0
  14. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-bottom.d.ts +3 -0
  15. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-bottom.d.ts.map +1 -0
  16. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-bottom.js +423 -0
  17. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-bottom.js.map +1 -0
  18. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top-single-table.d.ts +3 -0
  19. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top-single-table.d.ts.map +1 -0
  20. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top-single-table.js +331 -0
  21. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top-single-table.js.map +1 -0
  22. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/{simple-table.d.ts → page-break-table-with-margin-top.d.ts} +1 -1
  23. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top.d.ts.map +1 -0
  24. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top.js +423 -0
  25. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top.js.map +1 -0
  26. package/lib/abstract-document-exporters/__tests__/{docx2/test-defs/simple-table copy.d.ts → pdf/test-defs/simple-table-with-header.d.ts} +1 -1
  27. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-with-header.d.ts.map +1 -0
  28. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-with-header.js +460 -0
  29. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-with-header.js.map +1 -0
  30. package/lib/{abstract-document/__tests__/markdown/test-defs/markdown.d.ts → abstract-document-exporters/__tests__/pdf/test-defs/single-figure.d.ts} +1 -1
  31. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-figure.d.ts.map +1 -0
  32. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-figure.js +238 -0
  33. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-figure.js.map +1 -0
  34. package/lib/abstract-document-exporters/docx2/render-image.js +2 -2
  35. package/lib/abstract-document-exporters/docx2/render-image.js.map +1 -1
  36. package/lib/abstract-document-exporters/pdf/font.d.ts +2 -1
  37. package/lib/abstract-document-exporters/pdf/font.d.ts.map +1 -1
  38. package/lib/abstract-document-exporters/pdf/font.js +16 -12
  39. package/lib/abstract-document-exporters/pdf/font.js.map +1 -1
  40. package/lib/abstract-document-exporters/pdf/measure.js +4 -3
  41. package/lib/abstract-document-exporters/pdf/measure.js.map +1 -1
  42. package/lib/abstract-document-exporters/pdf/paginate.js +46 -29
  43. package/lib/abstract-document-exporters/pdf/paginate.js.map +1 -1
  44. package/lib/abstract-document-exporters/pdf/pre-process.js +8 -0
  45. package/lib/abstract-document-exporters/pdf/pre-process.js.map +1 -1
  46. package/lib/abstract-document-exporters/pdf/render-image.js +4 -3
  47. package/lib/abstract-document-exporters/pdf/render-image.js.map +1 -1
  48. package/lib/abstract-document-exporters/pdf/render.js +7 -8
  49. package/lib/abstract-document-exporters/pdf/render.js.map +1 -1
  50. package/package.json +3 -3
  51. package/src/abstract-document/section-elements/table.ts +6 -11
  52. package/src/abstract-document-exporters/__tests__/docx2/tmp/Group.docx +0 -0
  53. package/src/abstract-document-exporters/__tests__/docx2/tmp/Header and footer.docx and b/package/src/abstract-document-exporters/__tests__/docx2/tmp/Header → footer.docx +0 -0
  54. package/src/abstract-document-exporters/__tests__/docx2/tmp/Mixed hyperlink and textrun.docx and b/package/src/abstract-document-exporters/__tests__/docx2/tmp/Mixed hyperlink → textrun.docx +0 -0
  55. package/src/abstract-document-exporters/__tests__/docx2/tmp/Mixed textrun and images.docx and b/package/src/abstract-document-exporters/__tests__/docx2/tmp/Mixed textrun → images.docx +0 -0
  56. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple images.docx +0 -0
  57. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple tables.docx +0 -0
  58. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with Center alignment.docx +0 -0
  59. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with End alignment.docx +0 -0
  60. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with Start alignment that linebreaks.docx +0 -0
  61. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with Start alignment.docx +0 -0
  62. package/src/abstract-document-exporters/__tests__/docx2/tmp/Page numbering.docx +0 -0
  63. package/src/abstract-document-exporters/__tests__/docx2/tmp/Simple table colSpan and rowSpan.docx and b/package/src/abstract-document-exporters/__tests__/docx2/tmp/Simple table colSpan → rowSpan.docx +0 -0
  64. package/src/abstract-document-exporters/__tests__/docx2/tmp/Simple table without rows.docx +0 -0
  65. package/src/abstract-document-exporters/__tests__/docx2/tmp/Simple table.docx +0 -0
  66. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single hyperlink.docx +0 -0
  67. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single image.docx +0 -0
  68. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Center alignment that linebreaks.docx +0 -0
  69. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Center alignment.docx +0 -0
  70. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with End alignment that linebreaks.docx +0 -0
  71. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with End alignment.docx +0 -0
  72. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Start alignment that linebreaks.docx +0 -0
  73. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Start alignment.docx +0 -0
  74. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun.docx +0 -0
  75. package/src/abstract-document-exporters/__tests__/docx2/tmp/hello.docx +0 -0
  76. package/src/abstract-document-exporters/__tests__/docx2/tmp/world.docx +0 -0
  77. package/src/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header.tsx +1555 -0
  78. package/src/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header2.tsx +824 -0
  79. package/src/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-bottom.tsx +455 -0
  80. package/src/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top-single-table.tsx +354 -0
  81. package/src/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top.tsx +455 -0
  82. package/src/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-with-header.tsx +482 -0
  83. package/src/abstract-document-exporters/__tests__/pdf/test-defs/single-figure.tsx +323 -0
  84. package/src/abstract-document-exporters/__tests__/pdf/tmp/Group Paragraphs.pdf +2 -2
  85. package/src/abstract-document-exporters/__tests__/pdf/tmp/Group Tables.pdf +2 -2
  86. package/src/abstract-document-exporters/__tests__/pdf/tmp/Group too big for one page.pdf +2 -2
  87. package/src/abstract-document-exporters/__tests__/pdf/tmp/Header and footer.pdf +2 -2
  88. package/src/abstract-document-exporters/__tests__/pdf/tmp/Hyperlink internal linktarget.pdf +2 -2
  89. package/src/abstract-document-exporters/__tests__/pdf/tmp/Hyperlink internal.pdf +2 -2
  90. package/src/abstract-document-exporters/__tests__/pdf/tmp/Margins header body footer.pdf +2 -2
  91. package/src/abstract-document-exporters/__tests__/pdf/tmp/Mixed hyperlink and textrun.pdf +2 -2
  92. package/src/abstract-document-exporters/__tests__/pdf/tmp/Mixed textrun and images.pdf and b/package/src/abstract-document-exporters/__tests__/pdf/tmp/Mixed textrun → images.pdf +0 -0
  93. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple images overflow.pdf +0 -0
  94. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple images.pdf +0 -0
  95. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with Center alignment.pdf +2 -2
  96. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with End alignment.pdf +2 -2
  97. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with Start alignment that linebreaks.pdf +2 -2
  98. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with Start alignment.pdf +2 -2
  99. package/src/abstract-document-exporters/__tests__/pdf/tmp/Page numbering.pdf +2 -2
  100. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table row that doesnt fit page.pdf +2 -2
  101. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table single row.pdf +2 -2
  102. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with group.pdf +2 -2
  103. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with header 2.pdf +676 -0
  104. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with header.pdf +3833 -0
  105. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with margin bottom.pdf +404 -0
  106. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with margin top single table.pdf +336 -0
  107. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with margin top.pdf +404 -0
  108. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with margin.pdf +404 -0
  109. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with rowSpan multipages.pdf +2 -2
  110. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with rowSpan.pdf +2 -2
  111. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table all auto.pdf +2 -2
  112. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table all fix.pdf +2 -2
  113. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table background.pdf +2 -2
  114. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table cell padding of image.pdf +0 -0
  115. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table cell padding of text.pdf +2 -2
  116. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table center alignment.pdf +2 -2
  117. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table colSpan and rowSpan.pdf +2 -2
  118. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table mix auto fix.pdf +2 -2
  119. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table padding.pdf +2 -2
  120. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table right alignment.pdf +2 -2
  121. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table row alignment.pdf +2 -2
  122. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table text alignment in cell with wrapping.pdf +2 -2
  123. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table text alignment in cell.pdf +2 -2
  124. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table with default colored borders.pdf +2 -2
  125. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table with header.pdf +409 -0
  126. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table with multi colored borders.pdf +2 -2
  127. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table with single colored borders.pdf +2 -2
  128. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single date.pdf +14 -14
  129. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single figure.pdf +204 -0
  130. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single hyperlink centered.pdf +2 -2
  131. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single hyperlink right aligned.pdf +2 -2
  132. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single hyperlink.pdf +2 -2
  133. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image svg color hex.pdf +2 -2
  134. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image svg color name.pdf +2 -2
  135. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image svg color url.pdf +2 -2
  136. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image.pdf +0 -0
  137. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Center alignment that linebreaks.pdf +2 -2
  138. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Center alignment.pdf +2 -2
  139. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with End alignment that linebreaks.pdf +2 -2
  140. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with End alignment.pdf +2 -2
  141. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Justify alignment.pdf +2 -2
  142. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Start alignment that linebreaks.pdf +2 -2
  143. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Start alignment.pdf +2 -2
  144. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with super and subscripts.pdf +2 -2
  145. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun.pdf +2 -2
  146. package/src/abstract-document-exporters/__tests__/pdf/tmp/Table of content separator.pdf +2 -2
  147. package/src/abstract-document-exporters/__tests__/pdf/tmp/hello.pdf +2 -2
  148. package/src/abstract-document-exporters/__tests__/pdf/tmp/world.pdf +2 -2
  149. package/src/abstract-document-exporters/docx2/render-image.ts +2 -2
  150. package/src/abstract-document-exporters/pdf/font.ts +18 -9
  151. package/src/abstract-document-exporters/pdf/measure.ts +5 -5
  152. package/src/abstract-document-exporters/pdf/paginate.ts +88 -38
  153. package/src/abstract-document-exporters/pdf/pre-process.ts +8 -0
  154. package/src/abstract-document-exporters/pdf/render-image.ts +10 -4
  155. package/src/abstract-document-exporters/pdf/render.ts +8 -9
  156. package/lib/abstract-document/__tests__/markdown/test-defs/markdown.d.ts.map +0 -1
  157. package/lib/abstract-document/__tests__/markdown/test-defs/markdown.js +0 -14
  158. package/lib/abstract-document/__tests__/markdown/test-defs/markdown.js.map +0 -1
  159. package/lib/abstract-document/primitives/layout-foundation.js copy.map +0 -1
  160. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/simple-table copy.d.ts.map +0 -1
  161. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/simple-table copy.js +0 -195
  162. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/simple-table copy.js.map +0 -1
  163. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/table-of-content-separator.d.ts.map +0 -1
  164. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/table-of-content-separator.js +0 -18
  165. package/lib/abstract-document-exporters/__tests__/docx2/test-defs/table-of-content-separator.js.map +0 -1
  166. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group.d.ts.map +0 -1
  167. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group.js +0 -83
  168. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group.js.map +0 -1
  169. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table.d.ts.map +0 -1
  170. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table.js +0 -104
  171. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table.js.map +0 -1
  172. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-date.d.ts +0 -1
  173. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-date.d.ts.map +0 -1
  174. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-date.js +0 -70
  175. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/single-date.js.map +0 -1
@@ -73,7 +73,7 @@ endobj
73
73
  (PDFKit)
74
74
  endobj
75
75
  15 0 obj
76
- (D:20211115110806Z)
76
+ (D:20220105141307Z)
77
77
  endobj
78
78
  12 0 obj
79
79
  <<
@@ -139,7 +139,7 @@ trailer
139
139
  /Size 16
140
140
  /Root 3 0 R
141
141
  /Info 12 0 R
142
- /ID [<292bde5e9905412d5dfe8f38e6d7b4a6> <292bde5e9905412d5dfe8f38e6d7b4a6>]
142
+ /ID [<292acc6b74873eb3165156b4765d32f6> <292acc6b74873eb3165156b4765d32f6>]
143
143
  >>
144
144
  startxref
145
145
  1228
@@ -73,7 +73,7 @@ endobj
73
73
  (PDFKit)
74
74
  endobj
75
75
  15 0 obj
76
- (D:20211115110806Z)
76
+ (D:20220105141307Z)
77
77
  endobj
78
78
  12 0 obj
79
79
  <<
@@ -139,7 +139,7 @@ trailer
139
139
  /Size 16
140
140
  /Root 3 0 R
141
141
  /Info 12 0 R
142
- /ID [<b788f55ab38421ac7c38320ae42a7515> <b788f55ab38421ac7c38320ae42a7515>]
142
+ /ID [<49ebf714736b5e00f2d5b0e2493746e7> <49ebf714736b5e00f2d5b0e2493746e7>]
143
143
  >>
144
144
  startxref
145
145
  1209
@@ -108,7 +108,7 @@ endobj
108
108
  (PDFKit)
109
109
  endobj
110
110
  13 0 obj
111
- (D:20211115110806Z)
111
+ (D:20220105141307Z)
112
112
  endobj
113
113
  10 0 obj
114
114
  <<
@@ -172,7 +172,7 @@ trailer
172
172
  /Size 14
173
173
  /Root 3 0 R
174
174
  /Info 10 0 R
175
- /ID [<b87606bf27cb53bc5ab50ec0ae1feb75> <b87606bf27cb53bc5ab50ec0ae1feb75>]
175
+ /ID [<136b21712e916d94ce04ade13d9af411> <136b21712e916d94ce04ade13d9af411>]
176
176
  >>
177
177
  startxref
178
178
  1530
@@ -108,7 +108,7 @@ endobj
108
108
  (PDFKit)
109
109
  endobj
110
110
  13 0 obj
111
- (D:20211115110806Z)
111
+ (D:20220105141307Z)
112
112
  endobj
113
113
  10 0 obj
114
114
  <<
@@ -172,7 +172,7 @@ trailer
172
172
  /Size 14
173
173
  /Root 3 0 R
174
174
  /Info 10 0 R
175
- /ID [<aefd76086b1785964fff830c0763206b> <aefd76086b1785964fff830c0763206b>]
175
+ /ID [<50e0e1212fcc557e4fe351b43ff84b44> <50e0e1212fcc557e4fe351b43ff84b44>]
176
176
  >>
177
177
  startxref
178
178
  1530
@@ -154,7 +154,7 @@ endobj
154
154
  (PDFKit)
155
155
  endobj
156
156
  18 0 obj
157
- (D:20211115110806Z)
157
+ (D:20220105141307Z)
158
158
  endobj
159
159
  15 0 obj
160
160
  <<
@@ -215,7 +215,7 @@ trailer
215
215
  /Size 19
216
216
  /Root 3 0 R
217
217
  /Info 15 0 R
218
- /ID [<5e7a8a322209fe69033ecf76715ca9bb> <5e7a8a322209fe69033ecf76715ca9bb>]
218
+ /ID [<93791fa2ec3d2ec7399f89ea4d33cf84> <93791fa2ec3d2ec7399f89ea4d33cf84>]
219
219
  >>
220
220
  startxref
221
221
  1798
@@ -51,7 +51,7 @@ endobj
51
51
  (PDFKit)
52
52
  endobj
53
53
  12 0 obj
54
- (D:20211115110806Z)
54
+ (D:20220105141307Z)
55
55
  endobj
56
56
  9 0 obj
57
57
  <<
@@ -114,7 +114,7 @@ trailer
114
114
  /Size 13
115
115
  /Root 3 0 R
116
116
  /Info 9 0 R
117
- /ID [<02f50c6fca8984b4a8ad5124068a0eb8> <02f50c6fca8984b4a8ad5124068a0eb8>]
117
+ /ID [<3c2711558dd2781b20915f96040e1526> <3c2711558dd2781b20915f96040e1526>]
118
118
  >>
119
119
  startxref
120
120
  1427
@@ -43,7 +43,7 @@ endobj
43
43
  (PDFKit)
44
44
  endobj
45
45
  12 0 obj
46
- (D:20211115110806Z)
46
+ (D:20220105141307Z)
47
47
  endobj
48
48
  9 0 obj
49
49
  <<
@@ -106,7 +106,7 @@ trailer
106
106
  /Size 13
107
107
  /Root 3 0 R
108
108
  /Info 9 0 R
109
- /ID [<3cb6d99d9f85b72b6beba8b6a69f7bfb> <3cb6d99d9f85b72b6beba8b6a69f7bfb>]
109
+ /ID [<0db75c6289677f1ad17ef668515fa7d2> <0db75c6289677f1ad17ef668515fa7d2>]
110
110
  >>
111
111
  startxref
112
112
  854
@@ -51,7 +51,7 @@ endobj
51
51
  (PDFKit)
52
52
  endobj
53
53
  12 0 obj
54
- (D:20211115110806Z)
54
+ (D:20220105141308Z)
55
55
  endobj
56
56
  9 0 obj
57
57
  <<
@@ -114,7 +114,7 @@ trailer
114
114
  /Size 13
115
115
  /Root 3 0 R
116
116
  /Info 9 0 R
117
- /ID [<657e4a37e0567967b0331e01abb73cc7> <657e4a37e0567967b0331e01abb73cc7>]
117
+ /ID [<f83f69ea152c953d9f3747868dcf40eb> <f83f69ea152c953d9f3747868dcf40eb>]
118
118
  >>
119
119
  startxref
120
120
  1427
@@ -43,7 +43,7 @@ endobj
43
43
  (PDFKit)
44
44
  endobj
45
45
  12 0 obj
46
- (D:20211115110806Z)
46
+ (D:20220105141308Z)
47
47
  endobj
48
48
  9 0 obj
49
49
  <<
@@ -106,7 +106,7 @@ trailer
106
106
  /Size 13
107
107
  /Root 3 0 R
108
108
  /Info 9 0 R
109
- /ID [<560cb817631fc4dcd3482a519583178b> <560cb817631fc4dcd3482a519583178b>]
109
+ /ID [<68d6858f9ade17df31d28c966a48cddb> <68d6858f9ade17df31d28c966a48cddb>]
110
110
  >>
111
111
  startxref
112
112
  853
@@ -43,7 +43,7 @@ endobj
43
43
  (PDFKit)
44
44
  endobj
45
45
  12 0 obj
46
- (D:20211115110806Z)
46
+ (D:20220105141308Z)
47
47
  endobj
48
48
  9 0 obj
49
49
  <<
@@ -106,7 +106,7 @@ trailer
106
106
  /Size 13
107
107
  /Root 3 0 R
108
108
  /Info 9 0 R
109
- /ID [<88d03e939d8c2317b1c1ea68ef593a2e> <88d03e939d8c2317b1c1ea68ef593a2e>]
109
+ /ID [<4df806dfcdd26f1dc01e62d192258a34> <4df806dfcdd26f1dc01e62d192258a34>]
110
110
  >>
111
111
  startxref
112
112
  848
@@ -51,7 +51,7 @@ endobj
51
51
  (PDFKit)
52
52
  endobj
53
53
  12 0 obj
54
- (D:20211115110806Z)
54
+ (D:20220105141308Z)
55
55
  endobj
56
56
  9 0 obj
57
57
  <<
@@ -114,7 +114,7 @@ trailer
114
114
  /Size 13
115
115
  /Root 3 0 R
116
116
  /Info 9 0 R
117
- /ID [<d686e1de0b1e348a2bdc964e5d1fa287> <d686e1de0b1e348a2bdc964e5d1fa287>]
117
+ /ID [<625a2072f50ef946504b36e8857533f5> <625a2072f50ef946504b36e8857533f5>]
118
118
  >>
119
119
  startxref
120
120
  1418
@@ -43,7 +43,7 @@ endobj
43
43
  (PDFKit)
44
44
  endobj
45
45
  12 0 obj
46
- (D:20211115110806Z)
46
+ (D:20220105141308Z)
47
47
  endobj
48
48
  9 0 obj
49
49
  <<
@@ -106,7 +106,7 @@ trailer
106
106
  /Size 13
107
107
  /Root 3 0 R
108
108
  /Info 9 0 R
109
- /ID [<bc7a0f84a3e8773d215383345b4c1587> <bc7a0f84a3e8773d215383345b4c1587>]
109
+ /ID [<922a6b4f464a68b0aec8899672882b99> <922a6b4f464a68b0aec8899672882b99>]
110
110
  >>
111
111
  startxref
112
112
  848
@@ -63,7 +63,7 @@ endobj
63
63
  (PDFKit)
64
64
  endobj
65
65
  12 0 obj
66
- (D:20211115110806Z)
66
+ (D:20220105141307Z)
67
67
  endobj
68
68
  9 0 obj
69
69
  <<
@@ -126,7 +126,7 @@ trailer
126
126
  /Size 13
127
127
  /Root 3 0 R
128
128
  /Info 9 0 R
129
- /ID [<211669b49b8d2bc0cd29e15778c258e3> <211669b49b8d2bc0cd29e15778c258e3>]
129
+ /ID [<5ce2a3270d9dd3762de37b24368a8488> <5ce2a3270d9dd3762de37b24368a8488>]
130
130
  >>
131
131
  startxref
132
132
  1076
@@ -43,7 +43,7 @@ endobj
43
43
  (PDFKit)
44
44
  endobj
45
45
  12 0 obj
46
- (D:20211115110806Z)
46
+ (D:20220105141308Z)
47
47
  endobj
48
48
  9 0 obj
49
49
  <<
@@ -106,7 +106,7 @@ trailer
106
106
  /Size 13
107
107
  /Root 3 0 R
108
108
  /Info 9 0 R
109
- /ID [<5649e9e88c1b5786d76e52dd9169f9d2> <5649e9e88c1b5786d76e52dd9169f9d2>]
109
+ /ID [<f72ca66521f8ca61a6d10642fcbf6e53> <f72ca66521f8ca61a6d10642fcbf6e53>]
110
110
  >>
111
111
  startxref
112
112
  824
@@ -84,7 +84,7 @@ endobj
84
84
  (PDFKit)
85
85
  endobj
86
86
  15 0 obj
87
- (D:20211115110806Z)
87
+ (D:20220105141308Z)
88
88
  endobj
89
89
  12 0 obj
90
90
  <<
@@ -150,7 +150,7 @@ trailer
150
150
  /Size 16
151
151
  /Root 3 0 R
152
152
  /Info 12 0 R
153
- /ID [<1ee60aeb4a49d08b4c182df8e870701f> <1ee60aeb4a49d08b4c182df8e870701f>]
153
+ /ID [<2d8f748580b709d467a8dfc2d8cedb2b> <2d8f748580b709d467a8dfc2d8cedb2b>]
154
154
  >>
155
155
  startxref
156
156
  1439
@@ -79,7 +79,7 @@ endobj
79
79
  (PDFKit)
80
80
  endobj
81
81
  15 0 obj
82
- (D:20211115110805Z)
82
+ (D:20220105141307Z)
83
83
  endobj
84
84
  12 0 obj
85
85
  <<
@@ -145,7 +145,7 @@ trailer
145
145
  /Size 16
146
146
  /Root 3 0 R
147
147
  /Info 12 0 R
148
- /ID [<a1f45cacf8ce755c7fdfbbb3f26177c9> <a1f45cacf8ce755c7fdfbbb3f26177c9>]
148
+ /ID [<3c7e24947b3759fe250cc7ebd277f800> <3c7e24947b3759fe250cc7ebd277f800>]
149
149
  >>
150
150
  startxref
151
151
  1212
@@ -43,7 +43,7 @@ endobj
43
43
  (PDFKit)
44
44
  endobj
45
45
  12 0 obj
46
- (D:20211115110806Z)
46
+ (D:20220105141308Z)
47
47
  endobj
48
48
  9 0 obj
49
49
  <<
@@ -106,7 +106,7 @@ trailer
106
106
  /Size 13
107
107
  /Root 3 0 R
108
108
  /Info 9 0 R
109
- /ID [<4209cde6d1cf32936e33e8cc45c05dee> <4209cde6d1cf32936e33e8cc45c05dee>]
109
+ /ID [<80a4a883addd5daa68f7e212d82ef986> <80a4a883addd5daa68f7e212d82ef986>]
110
110
  >>
111
111
  startxref
112
112
  837
@@ -50,11 +50,11 @@ function abstractComponentToDocX(
50
50
  // preserveAspectRatio: "xMinYMin",
51
51
  // //fontCallback: component.overrideSvgFont
52
52
  // // ? (_family: string, _bold: boolean, _italic: boolean) => {
53
- // // return getFontName(textStyle);
53
+ // // return getFontNameStyle(textStyle);
54
54
  // // }
55
55
  // // : undefined,
56
56
  // // fontCallback: (_family: string, _bold: boolean, _italic: boolean) => {
57
- // // return getFontName(textStyle);
57
+ // // return getFontNameStyle(textStyle);
58
58
  // // }
59
59
  // });
60
60
  // }
@@ -22,18 +22,27 @@ export function registerFonts(
22
22
  }
23
23
  }
24
24
 
25
- export function getFontName(textStyle: AD.TextStyle.TextStyle): string {
26
- const name = textStyle.fontFamily || "Helvetica";
27
- if (textStyle.bold && textStyle.italic) {
25
+ export function getFontNameStyle(textStyle: AD.TextStyle.TextStyle): string {
26
+ return getFontName(textStyle.fontFamily, textStyle.bold, textStyle.italic, textStyle.mediumBold);
27
+ }
28
+
29
+ export function getFontName(
30
+ fontFamily: string | undefined,
31
+ bold: boolean | undefined,
32
+ italic: boolean | undefined,
33
+ mediumBold: boolean | undefined
34
+ ): string {
35
+ const name = fontFamily || "Helvetica";
36
+ if (bold && italic) {
28
37
  return name + "-BoldOblique";
29
- } else if (textStyle.bold) {
30
- return name + "-Bold";
31
- } else if (textStyle.italic) {
32
- return name + "-Oblique";
33
- } else if (textStyle.mediumBold && textStyle.italic) {
38
+ } else if (mediumBold && italic) {
34
39
  return name + "-MediumOblique";
35
- } else if (textStyle.mediumBold) {
40
+ } else if (bold) {
41
+ return name + "-Bold";
42
+ } else if (mediumBold) {
36
43
  return name + "-Medium";
44
+ } else if (italic) {
45
+ return name + "-Oblique";
37
46
  } else {
38
47
  return name;
39
48
  }
@@ -2,7 +2,7 @@ import * as R from "ramda";
2
2
  import * as AD from "../../abstract-document/index";
3
3
  import { exhaustiveCheck } from "ts-exhaustive-check";
4
4
  import { Page } from "./paginate";
5
- import { registerFonts, getFontName } from "./font";
5
+ import { registerFonts, getFontNameStyle } from "./font";
6
6
 
7
7
  //tslint:disable:no-any variable-name
8
8
 
@@ -195,8 +195,8 @@ export function measureTable(
195
195
  const infinityWidth = (tableAvailableWidth - fixedColumnsWidth) / numInfinityColumns;
196
196
  const columnWidths = table.columnWidths.map((w) => (isFinite(w) ? w : infinityWidth));
197
197
  const desiredSizes = new Map<any, AD.Size.Size>();
198
-
199
- for (let row of table.children) {
198
+ const rows = [...table.headerRows, ...table.children];
199
+ for (let row of rows) {
200
200
  let column = 0;
201
201
  for (let cell of row.children) {
202
202
  const cellStyle = AD.Resources.getStyle(
@@ -229,7 +229,7 @@ export function measureTable(
229
229
  : table.columnWidths.reduce((a, b) => a + b, style.margins.left + style.margins.right);
230
230
 
231
231
  let desiredHeight = style.margins.top + style.margins.bottom;
232
- for (let row of table.children) {
232
+ for (let row of rows) {
233
233
  let rowHeight = row.children.map((c) => getDesiredSize(c, desiredSizes).height).reduce((a, b) => Math.max(a, b), 0);
234
234
  desiredHeight += rowHeight;
235
235
  desiredSizes.set(row, AD.Size.create(desiredWidth, rowHeight));
@@ -373,7 +373,7 @@ function measureText(
373
373
  textStyle: AD.TextStyle.TextStyle,
374
374
  availableSize: AD.Size.Size
375
375
  ): AD.Size.Size {
376
- const font = getFontName(textStyle);
376
+ const font = getFontNameStyle(textStyle);
377
377
  const fontSize = AD.TextStyle.calculateFontSize(textStyle, 10);
378
378
  pdf
379
379
  .font(font)
@@ -83,49 +83,35 @@ function splitSection(
83
83
  const availableHeight = contentRect.height + leadingSpace + trailingSpace;
84
84
  if (elementsHeight > availableHeight) {
85
85
  if (element.type === "Table" && element.children.length > 1) {
86
- //Try to split table
86
+ //Remove last element
87
87
  elements.pop();
88
88
  elementsHeight -= elementSize.height;
89
- let shouldPushTable = true;
90
- let tableHead = {} as AD.Table.Table;
91
- let tableRest = {} as AD.Table.Table;
92
-
93
- //Find where to split table
94
- for (const [rowIndex, row] of element.children.entries()) {
95
- const rowSize = getDesiredSize(row, desiredSizes);
96
- elementsHeight += rowSize.height;
97
- if (elementsHeight > availableHeight) {
98
- if (rowIndex === 0 && elements.length !== 0) {
99
- shouldPushTable = false;
100
- break;
101
- }
102
-
103
- const [newTableHead, newTableRest] = splitTableAt(
104
- pdfKit,
105
- document,
106
- resources,
107
- desiredSizes,
108
- element,
109
- Math.max(rowIndex, 1)
110
- );
111
- tableHead = newTableHead;
112
- tableRest = newTableRest;
113
- break;
114
- }
115
- }
116
89
 
117
- if (shouldPushTable) {
90
+ //Try to split table
91
+ const [tableHead, tableTail] = splitTable(
92
+ pdfKit,
93
+ document,
94
+ resources,
95
+ desiredSizes,
96
+ element,
97
+ elementsHeight,
98
+ availableHeight,
99
+ elements.length
100
+ );
101
+
102
+ const tableSplit: AD.Table.Table[] = [];
103
+ if (tableHead) {
118
104
  elements.push(tableHead);
119
- const newChildren: AD.Table.Table[] = [];
120
- if (shouldPushTable) {
121
- newChildren.push(tableHead);
122
- }
123
- newChildren.push(tableRest);
124
- //Add split table to children to process tableRest
125
- children = [...children.slice(0, i), ...newChildren, ...children.slice(i + 1)];
105
+ tableSplit.push(tableHead);
126
106
  } else {
127
107
  i--;
128
108
  }
109
+ if (tableTail) {
110
+ tableSplit.push(tableTail);
111
+ }
112
+
113
+ //Add split table to children to process tableTail in next iteration
114
+ children = [...children.slice(0, i), ...tableSplit, ...children.slice(i + 1)];
129
115
 
130
116
  currentPage = createPage(resources, desiredSizes, currentPage, section, elements, pages.length === 0);
131
117
  pages.push(currentPage);
@@ -153,6 +139,62 @@ function splitSection(
153
139
  return pages;
154
140
  }
155
141
 
142
+ function splitTable(
143
+ pdfKit: any,
144
+ document: AD.AbstractDoc.AbstractDoc,
145
+ resources: AD.Resources.Resources,
146
+ desiredSizes: Map<{}, AD.Size.Size>,
147
+ table: AD.Table.Table,
148
+ elementsHeight: number,
149
+ availableHeight: number,
150
+ elementsLength: number
151
+ ): [AD.Table.Table | undefined, AD.Table.Table | undefined] {
152
+ let tableHead = undefined;
153
+ let tableRest = undefined;
154
+ elementsHeight += table.style.margins.top || 0;
155
+ if (table.headerRows.length > 0) {
156
+ const headerSize = table.headerRows.reduce((acc, row) => (acc += getDesiredSize(row, desiredSizes).height), 0);
157
+ elementsHeight += headerSize;
158
+ }
159
+
160
+ //Find where to split table
161
+ for (const [rowIndex, row] of table.children.entries()) {
162
+ const rowSize = getDesiredSize(row, desiredSizes);
163
+ elementsHeight += rowSize.height;
164
+
165
+ if (elementsHeight > availableHeight) {
166
+ if (rowIndex === 0 && elementsLength !== 0) {
167
+ //Not even first row fit on the page, shove it all to the next page
168
+ return [undefined, table];
169
+ }
170
+
171
+ const [newTableHead, newTableRest] = splitTableAt(
172
+ pdfKit,
173
+ document,
174
+ resources,
175
+ desiredSizes,
176
+ table,
177
+ Math.max(rowIndex, 1)
178
+ );
179
+
180
+ if (newTableHead.children.length > 0) {
181
+ tableHead = newTableHead;
182
+ }
183
+ if (newTableRest.children.length > 0) {
184
+ tableRest = newTableRest;
185
+ }
186
+ break;
187
+ }
188
+ }
189
+
190
+ if (!tableHead && !tableRest) {
191
+ //Didnt find a place to split the table, meaning the whole table fits on current page
192
+ return [table, undefined];
193
+ }
194
+
195
+ return [tableHead, tableRest];
196
+ }
197
+
156
198
  function createPage(
157
199
  resources: AD.Resources.Resources,
158
200
  desiredSizes: Map<{}, AD.Size.Size>,
@@ -367,8 +409,16 @@ function splitTableAt(
367
409
  tailRows.push(...table.children.slice(splitIndex + 1));
368
410
 
369
411
  //Create tables and remeasure them
370
- const tableHead = { ...table, children: headRows };
371
- const tableTail = { ...table, children: tailRows };
412
+ const tableHead = {
413
+ ...table,
414
+ style: { ...table.style, margins: { ...table.style.margins, bottom: 0 } },
415
+ children: headRows,
416
+ };
417
+ const tableTail = {
418
+ ...table,
419
+ style: { ...table.style, margins: { ...table.style.margins, top: 0 } },
420
+ children: tailRows,
421
+ };
372
422
 
373
423
  const availableSize = getDesiredSize(table, desiredSizes);
374
424
  let pdf = new pdfKit();
@@ -283,8 +283,15 @@ function toChar(num: number): string {
283
283
  // }
284
284
 
285
285
  function preProcessTable(table: AD.Table.Table, resources: AD.Resources.Resources): AD.SectionElement.SectionElement {
286
+ const processedHeaders = [];
286
287
  const processedChildren = [];
287
288
  let rowSpans: Map<number, AD.TableCell.TableCell> = new Map();
289
+ if (table.headerRows) {
290
+ for (const row of table.headerRows) {
291
+ const header = preProcessTableRow(row, rowSpans, resources);
292
+ processedHeaders.push(header);
293
+ }
294
+ }
288
295
  for (const row of table.children) {
289
296
  const children = preProcessTableRow(row, rowSpans, resources);
290
297
  processedChildren.push(children);
@@ -294,6 +301,7 @@ function preProcessTable(table: AD.Table.Table, resources: AD.Resources.Resource
294
301
  columnWidths: table.columnWidths,
295
302
  styleName: table.styleName,
296
303
  style: table.style,
304
+ headerRows: processedHeaders,
297
305
  },
298
306
  processedChildren
299
307
  );
@@ -2,7 +2,7 @@ import * as AbstractImage from "abstract-image";
2
2
  import * as base64 from "base64-js";
3
3
  import svgToPdfKit from "svg-to-pdfkit";
4
4
  import * as AD from "../../abstract-document";
5
- import { getFontName, isFontAvailable } from "./font";
5
+ import { getFontNameStyle, getFontName, isFontAvailable } from "./font";
6
6
 
7
7
  export function renderImage(
8
8
  resources: AD.Resources.Resources,
@@ -84,7 +84,7 @@ function abstractComponentToPdf(
84
84
  if (isFontAvailable(family, resources)) {
85
85
  return family;
86
86
  } else {
87
- return getFontName(textStyle);
87
+ return getFontNameStyle(textStyle);
88
88
  }
89
89
  },
90
90
  });
@@ -115,13 +115,19 @@ function abstractComponentToPdf(
115
115
  .stroke(colorToRgb(component.strokeColor));
116
116
  break;
117
117
  case "text":
118
+ const font = getFontName(
119
+ component.fontFamily,
120
+ component.fontWeight === "bold",
121
+ component.italic,
122
+ component.fontWeight === "mediumBold"
123
+ );
118
124
  if (component.clockwiseRotationDegrees !== 0) {
119
125
  pdf.save();
120
126
  pdf.rotate(component.clockwiseRotationDegrees, {
121
127
  origin: [component.position.x, component.position.y],
122
128
  });
123
129
  }
124
- pdf.font(component.fontFamily).fontSize(component.fontSize);
130
+ pdf.font(font).fontSize(component.fontSize);
125
131
  const stringWidth = pdf.widthOfString(component.text);
126
132
  const stringHeight = pdf.currentLineHeight();
127
133
  const dx =
@@ -137,7 +143,7 @@ function abstractComponentToPdf(
137
143
  ? -stringHeight * 0.5
138
144
  : 0;
139
145
  pdf
140
- .font(component.fontFamily)
146
+ .font(font)
141
147
  .fontSize(component.fontSize)
142
148
  .fillColor(colorToRgb(component.textColor))
143
149
  .text(component.text, component.position.x + dx, component.position.y + dy, { lineBreak: false });