abstract-document 6.3.0 → 6.5.0

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 (169) hide show
  1. package/CHANGELOG.md +25 -7
  2. package/LICENSE +21 -0
  3. package/lib/abstract-document/section-elements/table.d.ts +2 -0
  4. package/lib/abstract-document/section-elements/table.d.ts.map +1 -1
  5. package/lib/abstract-document/section-elements/table.js +2 -2
  6. package/lib/abstract-document/section-elements/table.js.map +1 -1
  7. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group-too-big-for-one-page.d.ts +3 -0
  8. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group-too-big-for-one-page.d.ts.map +1 -0
  9. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group-too-big-for-one-page.js +251 -0
  10. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/group-too-big-for-one-page.js.map +1 -0
  11. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-row-that-doesnt-fit-page.d.ts +3 -0
  12. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-row-that-doesnt-fit-page.d.ts.map +1 -0
  13. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-row-that-doesnt-fit-page.js +294 -0
  14. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-row-that-doesnt-fit-page.js.map +1 -0
  15. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-single-row.d.ts +3 -0
  16. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-single-row.d.ts.map +1 -0
  17. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-single-row.js +209 -0
  18. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-single-row.js.map +1 -0
  19. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header.d.ts +3 -0
  20. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header.d.ts.map +1 -0
  21. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header.js +1529 -0
  22. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header.js.map +1 -0
  23. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header2.d.ts +3 -0
  24. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header2.d.ts.map +1 -0
  25. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header2.js +783 -0
  26. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header2.js.map +1 -0
  27. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-bottom.d.ts +3 -0
  28. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-bottom.d.ts.map +1 -0
  29. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-bottom.js +423 -0
  30. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-bottom.js.map +1 -0
  31. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top-single-table.d.ts +3 -0
  32. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top-single-table.d.ts.map +1 -0
  33. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top-single-table.js +331 -0
  34. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top-single-table.js.map +1 -0
  35. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top.d.ts +3 -0
  36. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top.d.ts.map +1 -0
  37. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top.js +423 -0
  38. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top.js.map +1 -0
  39. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin.d.ts +3 -0
  40. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin.d.ts.map +1 -0
  41. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin.js +56 -0
  42. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin.js.map +1 -0
  43. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-with-header.d.ts +3 -0
  44. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-with-header.d.ts.map +1 -0
  45. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-with-header.js +460 -0
  46. package/lib/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-with-header.js.map +1 -0
  47. package/lib/abstract-document-exporters/docx2/render-image.js +2 -2
  48. package/lib/abstract-document-exporters/docx2/render-image.js.map +1 -1
  49. package/lib/abstract-document-exporters/pdf/font.d.ts +2 -1
  50. package/lib/abstract-document-exporters/pdf/font.d.ts.map +1 -1
  51. package/lib/abstract-document-exporters/pdf/font.js +16 -12
  52. package/lib/abstract-document-exporters/pdf/font.js.map +1 -1
  53. package/lib/abstract-document-exporters/pdf/measure.js +4 -3
  54. package/lib/abstract-document-exporters/pdf/measure.js.map +1 -1
  55. package/lib/abstract-document-exporters/pdf/paginate.js +51 -19
  56. package/lib/abstract-document-exporters/pdf/paginate.js.map +1 -1
  57. package/lib/abstract-document-exporters/pdf/pre-process.js +8 -0
  58. package/lib/abstract-document-exporters/pdf/pre-process.js.map +1 -1
  59. package/lib/abstract-document-exporters/pdf/render-image.js +1 -1
  60. package/lib/abstract-document-exporters/pdf/render-image.js.map +1 -1
  61. package/lib/abstract-document-exporters/pdf/render.js +7 -8
  62. package/lib/abstract-document-exporters/pdf/render.js.map +1 -1
  63. package/package.json +4 -3
  64. package/src/abstract-document/section-elements/table.ts +6 -11
  65. package/src/abstract-document-exporters/__tests__/docx2/tmp/Group.docx +0 -0
  66. 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
  67. 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
  68. 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
  69. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple images.docx +0 -0
  70. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple tables.docx +0 -0
  71. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with Center alignment.docx +0 -0
  72. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with End alignment.docx +0 -0
  73. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with Start alignment that linebreaks.docx +0 -0
  74. package/src/abstract-document-exporters/__tests__/docx2/tmp/Multiple textrun with Start alignment.docx +0 -0
  75. package/src/abstract-document-exporters/__tests__/docx2/tmp/Page numbering.docx +0 -0
  76. 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
  77. package/src/abstract-document-exporters/__tests__/docx2/tmp/Simple table without rows.docx +0 -0
  78. package/src/abstract-document-exporters/__tests__/docx2/tmp/Simple table.docx +0 -0
  79. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single hyperlink.docx +0 -0
  80. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single image.docx +0 -0
  81. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Center alignment that linebreaks.docx +0 -0
  82. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Center alignment.docx +0 -0
  83. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with End alignment that linebreaks.docx +0 -0
  84. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with End alignment.docx +0 -0
  85. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Start alignment that linebreaks.docx +0 -0
  86. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun with Start alignment.docx +0 -0
  87. package/src/abstract-document-exporters/__tests__/docx2/tmp/Single textrun.docx +0 -0
  88. package/src/abstract-document-exporters/__tests__/docx2/tmp/hello.docx +0 -0
  89. package/src/abstract-document-exporters/__tests__/docx2/tmp/world.docx +0 -0
  90. package/src/abstract-document-exporters/__tests__/pdf/test-defs/group-too-big-for-one-page.tsx +272 -0
  91. package/src/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-row-that-doesnt-fit-page.tsx +317 -0
  92. package/src/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-single-row.tsx +227 -0
  93. package/src/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header.tsx +1555 -0
  94. package/src/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-header2.tsx +824 -0
  95. package/src/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-bottom.tsx +455 -0
  96. package/src/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top-single-table.tsx +354 -0
  97. package/src/abstract-document-exporters/__tests__/pdf/test-defs/page-break-table-with-margin-top.tsx +455 -0
  98. package/src/abstract-document-exporters/__tests__/pdf/test-defs/simple-table-with-header.tsx +482 -0
  99. package/src/abstract-document-exporters/__tests__/pdf/tmp/Group Paragraphs.pdf +2 -2
  100. package/src/abstract-document-exporters/__tests__/pdf/tmp/Group Tables.pdf +2 -2
  101. package/src/abstract-document-exporters/__tests__/pdf/tmp/Group too big for one page.pdf +268 -0
  102. package/src/abstract-document-exporters/__tests__/pdf/tmp/Header and footer.pdf +2 -2
  103. package/src/abstract-document-exporters/__tests__/pdf/tmp/Hyperlink internal linktarget.pdf +2 -2
  104. package/src/abstract-document-exporters/__tests__/pdf/tmp/Hyperlink internal.pdf +2 -2
  105. package/src/abstract-document-exporters/__tests__/pdf/tmp/Margins header body footer.pdf +2 -2
  106. package/src/abstract-document-exporters/__tests__/pdf/tmp/Mixed hyperlink and textrun.pdf +2 -2
  107. 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
  108. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple images overflow.pdf +0 -0
  109. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple images.pdf +0 -0
  110. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with Center alignment.pdf +2 -2
  111. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with End alignment.pdf +2 -2
  112. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with Start alignment that linebreaks.pdf +2 -2
  113. package/src/abstract-document-exporters/__tests__/pdf/tmp/Multiple textrun with Start alignment.pdf +2 -2
  114. package/src/abstract-document-exporters/__tests__/pdf/tmp/Page numbering.pdf +2 -2
  115. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table row that doesnt fit page.pdf +302 -0
  116. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table single row.pdf +234 -0
  117. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with group.pdf +2 -2
  118. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with header 2.pdf +676 -0
  119. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with header.pdf +3833 -0
  120. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with margin bottom.pdf +404 -0
  121. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with margin top single table.pdf +336 -0
  122. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with margin top.pdf +404 -0
  123. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with margin.pdf +404 -0
  124. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with rowSpan multipages.pdf +2 -2
  125. package/src/abstract-document-exporters/__tests__/pdf/tmp/Pagebreak table with rowSpan.pdf +2 -2
  126. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table all auto.pdf +2 -2
  127. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table all fix.pdf +2 -2
  128. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table background.pdf +2 -2
  129. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table cell padding of image.pdf +0 -0
  130. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table cell padding of text.pdf +2 -2
  131. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table center alignment.pdf +2 -2
  132. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table colSpan and rowSpan.pdf +2 -2
  133. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table mix auto fix.pdf +2 -2
  134. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table padding.pdf +2 -2
  135. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table right alignment.pdf +2 -2
  136. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table row alignment.pdf +2 -2
  137. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table text alignment in cell with wrapping.pdf +2 -2
  138. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table text alignment in cell.pdf +2 -2
  139. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table with default colored borders.pdf +2 -2
  140. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table with header.pdf +409 -0
  141. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table with multi colored borders.pdf +2 -2
  142. package/src/abstract-document-exporters/__tests__/pdf/tmp/Simple table with single colored borders.pdf +2 -2
  143. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single date.pdf +14 -14
  144. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single hyperlink centered.pdf +2 -2
  145. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single hyperlink right aligned.pdf +2 -2
  146. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single hyperlink.pdf +2 -2
  147. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image svg color hex.pdf +2 -2
  148. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image svg color name.pdf +2 -2
  149. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image svg color url.pdf +2 -2
  150. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single image.pdf +0 -0
  151. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Center alignment that linebreaks.pdf +2 -2
  152. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Center alignment.pdf +2 -2
  153. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with End alignment that linebreaks.pdf +2 -2
  154. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with End alignment.pdf +2 -2
  155. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Justify alignment.pdf +2 -2
  156. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Start alignment that linebreaks.pdf +2 -2
  157. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with Start alignment.pdf +2 -2
  158. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun with super and subscripts.pdf +2 -2
  159. package/src/abstract-document-exporters/__tests__/pdf/tmp/Single textrun.pdf +2 -2
  160. package/src/abstract-document-exporters/__tests__/pdf/tmp/Table of content separator.pdf +2 -2
  161. package/src/abstract-document-exporters/__tests__/pdf/tmp/hello.pdf +2 -2
  162. package/src/abstract-document-exporters/__tests__/pdf/tmp/world.pdf +2 -2
  163. package/src/abstract-document-exporters/docx2/render-image.ts +2 -2
  164. package/src/abstract-document-exporters/pdf/font.ts +18 -9
  165. package/src/abstract-document-exporters/pdf/measure.ts +5 -5
  166. package/src/abstract-document-exporters/pdf/paginate.ts +93 -27
  167. package/src/abstract-document-exporters/pdf/pre-process.ts +8 -0
  168. package/src/abstract-document-exporters/pdf/render-image.ts +2 -2
  169. package/src/abstract-document-exporters/pdf/render.ts +8 -9
@@ -51,7 +51,7 @@ endobj
51
51
  (PDFKit)
52
52
  endobj
53
53
  12 0 obj
54
- (D:20211111111559Z)
54
+ (D:20220105111759Z)
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 [<77a95761fb895f18a58fc19cfe3b8fcb> <77a95761fb895f18a58fc19cfe3b8fcb>]
117
+ /ID [<cf0bc121be9f78bc94997565360fce90> <cf0bc121be9f78bc94997565360fce90>]
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:20211111111559Z)
46
+ (D:20220105111759Z)
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 [<cb84b1b3fe918e0055f2a4d0ca9d1264> <cb84b1b3fe918e0055f2a4d0ca9d1264>]
109
+ /ID [<41e6127e78ee3efe2c987b26324c3347> <41e6127e78ee3efe2c987b26324c3347>]
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:20211111111559Z)
66
+ (D:20220105111759Z)
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 [<26247618318ffdcb70e370945b92bb11> <26247618318ffdcb70e370945b92bb11>]
129
+ /ID [<1bf6530e544b32c0fdb03695babaa7c1> <1bf6530e544b32c0fdb03695babaa7c1>]
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:20211111111559Z)
46
+ (D:20220105111759Z)
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 [<d05fa0260b32c53af7988528e0f3a907> <d05fa0260b32c53af7988528e0f3a907>]
109
+ /ID [<bb4e849828d6652e881b71e25a89302a> <bb4e849828d6652e881b71e25a89302a>]
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:20211111111559Z)
87
+ (D:20220105111759Z)
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 [<7562eadd53e15b73b819e4f60e6fcbef> <7562eadd53e15b73b819e4f60e6fcbef>]
153
+ /ID [<aff467c850a90b8753d7857e8c793026> <aff467c850a90b8753d7857e8c793026>]
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:20211111111559Z)
82
+ (D:20220105111758Z)
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 [<38e2f3cd32d0c1b2f14b4e9296bfae96> <38e2f3cd32d0c1b2f14b4e9296bfae96>]
148
+ /ID [<0ff0e795ffbd1e504a7e1c674a4e4be6> <0ff0e795ffbd1e504a7e1c674a4e4be6>]
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:20211111111559Z)
46
+ (D:20220105111759Z)
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 [<8b849bcdc7f0598866933937a0613a59> <8b849bcdc7f0598866933937a0613a59>]
109
+ /ID [<34aa326327ae950341773bad4e6b0ff8> <34aa326327ae950341773bad4e6b0ff8>]
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)
@@ -82,40 +82,42 @@ function splitSection(
82
82
  const [leadingSpace, trailingSpace] = getLeadingAndTrailingSpace(resources, section, elements);
83
83
  const availableHeight = contentRect.height + leadingSpace + trailingSpace;
84
84
  if (elementsHeight > availableHeight) {
85
- if (element.type === "Table") {
86
- //Try to split table
85
+ if (element.type === "Table" && element.children.length > 1) {
86
+ //Remove last element
87
87
  elements.pop();
88
88
  elementsHeight -= elementSize.height;
89
- let tableHead = {} as AD.Table.Table;
90
- let tableRest = {} as AD.Table.Table;
91
-
92
- //Find where to split table
93
- for (const [rowIndex, row] of element.children.entries()) {
94
- const rowSize = getDesiredSize(row, desiredSizes);
95
- elementsHeight += rowSize.height;
96
- if (elementsHeight > availableHeight) {
97
- const [newTableHead, newTableRest] = splitTableAt(
98
- pdfKit,
99
- document,
100
- resources,
101
- desiredSizes,
102
- element,
103
- rowIndex
104
- );
105
- tableHead = newTableHead;
106
- tableRest = newTableRest;
107
- break;
108
- }
89
+
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) {
104
+ elements.push(tableHead);
105
+ tableSplit.push(tableHead);
106
+ } else {
107
+ i--;
108
+ }
109
+ if (tableTail) {
110
+ tableSplit.push(tableTail);
109
111
  }
110
112
 
111
- elements.push(tableHead);
113
+ //Add split table to children to process tableTail in next iteration
114
+ children = [...children.slice(0, i), ...tableSplit, ...children.slice(i + 1)];
115
+
112
116
  currentPage = createPage(resources, desiredSizes, currentPage, section, elements, pages.length === 0);
113
117
  pages.push(currentPage);
114
118
  elements = [];
115
119
  elementsHeight = 0;
116
120
 
117
- //Add split table to children to process tableRest
118
- children = [...children.slice(0, i), tableHead, tableRest, ...children.slice(i + 1)];
119
121
  continue;
120
122
  }
121
123
 
@@ -137,6 +139,62 @@ function splitSection(
137
139
  return pages;
138
140
  }
139
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
+
140
198
  function createPage(
141
199
  resources: AD.Resources.Resources,
142
200
  desiredSizes: Map<{}, AD.Size.Size>,
@@ -351,8 +409,16 @@ function splitTableAt(
351
409
  tailRows.push(...table.children.slice(splitIndex + 1));
352
410
 
353
411
  //Create tables and remeasure them
354
- const tableHead = { ...table, children: headRows };
355
- 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
+ };
356
422
 
357
423
  const availableSize = getDesiredSize(table, desiredSizes);
358
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
  });
@@ -5,7 +5,7 @@ import { paginate, Page } from "./paginate";
5
5
  import { updatePageRefs } from "./update-refs";
6
6
  import BlobStream from "blob-stream";
7
7
  import { renderImage } from "./render-image";
8
- import { registerFonts, getFontName } from "./font";
8
+ import { registerFonts, getFontNameStyle } from "./font";
9
9
 
10
10
  type RowSpans = Map<number, { rowSpanLeft: number; colSpan: number }>;
11
11
 
@@ -467,7 +467,7 @@ function drawHyperLink(
467
467
  isLastAtom: boolean,
468
468
  availableWidth: number
469
469
  ): void {
470
- const font = getFontName(textStyle);
470
+ const font = getFontNameStyle(textStyle);
471
471
  const isInternalLink = hyperLink.target.startsWith("#") && !hyperLink.target.startsWith("#page=");
472
472
  const fontSize = AD.TextStyle.calculateFontSize(textStyle, 10);
473
473
  const isSingleAtom = isFirstAtom && isLastAtom;
@@ -536,7 +536,7 @@ function drawText(
536
536
  isLastAtom: boolean,
537
537
  availableWidth: number
538
538
  ): void {
539
- const font = getFontName(textStyle);
539
+ const font = getFontNameStyle(textStyle);
540
540
  const fontSize = AD.TextStyle.calculateFontSize(textStyle, 10);
541
541
  const isSingleAtom = isFirstAtom && isLastAtom;
542
542
  pdf
@@ -573,7 +573,7 @@ function drawText(
573
573
  }
574
574
 
575
575
  function drawDottedLine(pdf: any, finalRect: AD.Rect.Rect, textStyle: AD.TextStyle.TextStyle): void {
576
- const font = getFontName(textStyle);
576
+ const font = getFontNameStyle(textStyle);
577
577
  const fontSize = AD.TextStyle.calculateFontSize(textStyle, 10);
578
578
 
579
579
  const oneDotW = pdf.widthOfString(".", {
@@ -629,14 +629,15 @@ function renderTable(
629
629
  ) as AD.TableStyle.TableStyle;
630
630
  const availableWidth = finalRect.width;
631
631
  let y = finalRect.y + style.margins.top;
632
- for (let [index, row] of table.children.entries()) {
632
+ const rows = [...table.headerRows, ...table.children];
633
+ for (let [index, row] of rows.entries()) {
633
634
  const rowSize = getDesiredSize(row, desiredSizes);
634
635
  let x = finalRect.x + style.margins.left;
635
636
  if (style.alignment === "Center") x += 0.5 * (availableWidth - rowSize.width);
636
637
  else if (style.alignment === "Right") x += availableWidth - rowSize.width;
637
638
  const rowRect = AD.Rect.create(x, y, rowSize.width, rowSize.height);
638
639
  const isTop = index === 0;
639
- const isBottom = index === table.children.length - 1;
640
+ const isBottom = index === rows.length - 1;
640
641
  renderRow(resources, pdf, desiredSizes, rowRect, style.cellStyle, table, row, index, isTop, isBottom);
641
642
  y += rowSize.height;
642
643
  }
@@ -656,7 +657,6 @@ function renderRow(
656
657
  ): void {
657
658
  let x = finalRect.x;
658
659
  const rowSize = getDesiredSize(row, desiredSizes);
659
- let cellIndexSpan = 0;
660
660
  for (const [cellIndex, cell] of row.children.entries()) {
661
661
  if (cell.dummy) {
662
662
  const dummySize = getDesiredSize(cell, desiredSizes);
@@ -667,7 +667,7 @@ function renderRow(
667
667
  let height = rowSize.height;
668
668
  if (cell.rowSpan > 1) {
669
669
  for (let index = rowIndex + 1; index < rowIndex + cell.rowSpan; index++) {
670
- height += getDesiredSize(table.children[index], desiredSizes).height;
670
+ height += getDesiredSize([...table.headerRows, ...table.children][index], desiredSizes).height;
671
671
  }
672
672
  }
673
673
  const cellSize = getDesiredSize(cell, desiredSizes);
@@ -676,7 +676,6 @@ function renderRow(
676
676
  const isLast = cellIndex === row.children.length - 1;
677
677
  renderCell(resources, pdf, desiredSizes, cellRect, tableCellStyle, cell, isFirst, isLast, isTop, isBottom);
678
678
  x += cellSize.width;
679
- cellIndexSpan++;
680
679
  }
681
680
  }
682
681