@pdfme/pdf-lib 1.18.1 → 1.18.3

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 (138) hide show
  1. package/cjs/api/PDFDocument.js +195 -225
  2. package/cjs/api/PDFDocument.js.map +1 -1
  3. package/cjs/api/PDFEmbeddedFile.js +30 -33
  4. package/cjs/api/PDFEmbeddedFile.js.map +1 -1
  5. package/cjs/api/PDFEmbeddedPage.js +5 -7
  6. package/cjs/api/PDFEmbeddedPage.js.map +1 -1
  7. package/cjs/api/PDFFont.js +6 -8
  8. package/cjs/api/PDFFont.js.map +1 -1
  9. package/cjs/api/PDFImage.js +14 -16
  10. package/cjs/api/PDFImage.js.map +1 -1
  11. package/cjs/api/PDFJavaScript.js +19 -22
  12. package/cjs/api/PDFJavaScript.js.map +1 -1
  13. package/cjs/api/PDFPage.d.ts.map +1 -1
  14. package/cjs/api/PDFPage.js +26 -16
  15. package/cjs/api/PDFPage.js.map +1 -1
  16. package/cjs/api/PDFPageOptions.d.ts +14 -8
  17. package/cjs/api/PDFPageOptions.d.ts.map +1 -1
  18. package/cjs/api/PDFPageOptions.js.map +1 -1
  19. package/cjs/api/form/PDFField.js +1 -1
  20. package/cjs/api/form/PDFField.js.map +1 -1
  21. package/cjs/api/form/PDFForm.js +1 -1
  22. package/cjs/api/form/PDFForm.js.map +1 -1
  23. package/cjs/api/form/appearances.js +56 -16
  24. package/cjs/api/form/appearances.js.map +1 -1
  25. package/cjs/api/operations.d.ts +15 -0
  26. package/cjs/api/operations.d.ts.map +1 -1
  27. package/cjs/api/operations.js +22 -0
  28. package/cjs/api/operations.js.map +1 -1
  29. package/cjs/api/svg.d.ts +7 -1
  30. package/cjs/api/svg.d.ts.map +1 -1
  31. package/cjs/api/svg.js +332 -1016
  32. package/cjs/api/svg.js.map +1 -1
  33. package/cjs/core/PDFContext.js +11 -2
  34. package/cjs/core/PDFContext.js.map +1 -1
  35. package/cjs/core/embedders/CustomFontEmbedder.js +62 -74
  36. package/cjs/core/embedders/CustomFontEmbedder.js.map +1 -1
  37. package/cjs/core/embedders/CustomFontSubsetEmbedder.js +3 -5
  38. package/cjs/core/embedders/CustomFontSubsetEmbedder.js.map +1 -1
  39. package/cjs/core/embedders/FileEmbedder.js +30 -32
  40. package/cjs/core/embedders/FileEmbedder.js.map +1 -1
  41. package/cjs/core/embedders/JavaScriptEmbedder.js +12 -14
  42. package/cjs/core/embedders/JavaScriptEmbedder.js.map +1 -1
  43. package/cjs/core/embedders/JpegEmbedder.js +54 -59
  44. package/cjs/core/embedders/JpegEmbedder.js.map +1 -1
  45. package/cjs/core/embedders/PDFPageEmbedder.js +22 -26
  46. package/cjs/core/embedders/PDFPageEmbedder.js.map +1 -1
  47. package/cjs/core/embedders/PngEmbedder.js +20 -25
  48. package/cjs/core/embedders/PngEmbedder.js.map +1 -1
  49. package/cjs/core/parser/PDFObjectStreamParser.js +15 -17
  50. package/cjs/core/parser/PDFObjectStreamParser.js.map +1 -1
  51. package/cjs/core/parser/PDFParser.js +66 -74
  52. package/cjs/core/parser/PDFParser.js.map +1 -1
  53. package/cjs/core/writers/PDFStreamWriter.js +53 -55
  54. package/cjs/core/writers/PDFStreamWriter.js.map +1 -1
  55. package/cjs/core/writers/PDFWriter.js +62 -66
  56. package/cjs/core/writers/PDFWriter.js.map +1 -1
  57. package/cjs/types/index.d.ts +4 -4
  58. package/cjs/types/index.d.ts.map +1 -1
  59. package/dist/pdf-lib.esm.js +1123 -2589
  60. package/dist/pdf-lib.esm.js.map +1 -1
  61. package/dist/pdf-lib.esm.min.js +1 -15
  62. package/dist/pdf-lib.esm.min.js.map +1 -1
  63. package/dist/pdf-lib.js +1123 -2589
  64. package/dist/pdf-lib.js.map +1 -1
  65. package/dist/pdf-lib.min.js +1 -15
  66. package/dist/pdf-lib.min.js.map +1 -1
  67. package/es/api/PDFDocument.js +195 -226
  68. package/es/api/PDFDocument.js.map +1 -1
  69. package/es/api/PDFEmbeddedFile.js +30 -33
  70. package/es/api/PDFEmbeddedFile.js.map +1 -1
  71. package/es/api/PDFEmbeddedPage.js +5 -8
  72. package/es/api/PDFEmbeddedPage.js.map +1 -1
  73. package/es/api/PDFFont.js +6 -9
  74. package/es/api/PDFFont.js.map +1 -1
  75. package/es/api/PDFImage.js +14 -17
  76. package/es/api/PDFImage.js.map +1 -1
  77. package/es/api/PDFJavaScript.js +19 -22
  78. package/es/api/PDFJavaScript.js.map +1 -1
  79. package/es/api/PDFPage.d.ts.map +1 -1
  80. package/es/api/PDFPage.js +26 -17
  81. package/es/api/PDFPage.js.map +1 -1
  82. package/es/api/PDFPageOptions.d.ts +14 -8
  83. package/es/api/PDFPageOptions.d.ts.map +1 -1
  84. package/es/api/PDFPageOptions.js.map +1 -1
  85. package/es/api/form/PDFField.js +1 -1
  86. package/es/api/form/PDFField.js.map +1 -1
  87. package/es/api/form/PDFForm.js +1 -1
  88. package/es/api/form/PDFForm.js.map +1 -1
  89. package/es/api/form/appearances.js +56 -16
  90. package/es/api/form/appearances.js.map +1 -1
  91. package/es/api/operations.d.ts +15 -0
  92. package/es/api/operations.d.ts.map +1 -1
  93. package/es/api/operations.js +23 -1
  94. package/es/api/operations.js.map +1 -1
  95. package/es/api/svg.d.ts +7 -1
  96. package/es/api/svg.d.ts.map +1 -1
  97. package/es/api/svg.js +333 -1017
  98. package/es/api/svg.js.map +1 -1
  99. package/es/core/PDFContext.js +11 -2
  100. package/es/core/PDFContext.js.map +1 -1
  101. package/es/core/embedders/CustomFontEmbedder.js +62 -75
  102. package/es/core/embedders/CustomFontEmbedder.js.map +1 -1
  103. package/es/core/embedders/CustomFontSubsetEmbedder.js +3 -6
  104. package/es/core/embedders/CustomFontSubsetEmbedder.js.map +1 -1
  105. package/es/core/embedders/FileEmbedder.js +30 -33
  106. package/es/core/embedders/FileEmbedder.js.map +1 -1
  107. package/es/core/embedders/JavaScriptEmbedder.js +12 -15
  108. package/es/core/embedders/JavaScriptEmbedder.js.map +1 -1
  109. package/es/core/embedders/JpegEmbedder.js +54 -59
  110. package/es/core/embedders/JpegEmbedder.js.map +1 -1
  111. package/es/core/embedders/PDFPageEmbedder.js +22 -27
  112. package/es/core/embedders/PDFPageEmbedder.js.map +1 -1
  113. package/es/core/embedders/PngEmbedder.js +20 -25
  114. package/es/core/embedders/PngEmbedder.js.map +1 -1
  115. package/es/core/parser/PDFObjectStreamParser.js +15 -18
  116. package/es/core/parser/PDFObjectStreamParser.js.map +1 -1
  117. package/es/core/parser/PDFParser.js +66 -75
  118. package/es/core/parser/PDFParser.js.map +1 -1
  119. package/es/core/writers/PDFStreamWriter.js +53 -56
  120. package/es/core/writers/PDFStreamWriter.js.map +1 -1
  121. package/es/core/writers/PDFWriter.js +62 -67
  122. package/es/core/writers/PDFWriter.js.map +1 -1
  123. package/es/types/index.d.ts +4 -4
  124. package/es/types/index.d.ts.map +1 -1
  125. package/package.json +1 -1
  126. package/src/api/PDFPage.ts +12 -0
  127. package/src/api/PDFPageOptions.ts +14 -8
  128. package/src/api/operations.ts +45 -3
  129. package/src/api/svg.ts +305 -1086
  130. package/src/types/index.ts +6 -1
  131. package/ts3.4/cjs/api/PDFPageOptions.d.ts +14 -8
  132. package/ts3.4/cjs/api/operations.d.ts +15 -0
  133. package/ts3.4/cjs/api/svg.d.ts +7 -1
  134. package/ts3.4/cjs/types/index.d.ts +4 -4
  135. package/ts3.4/es/api/PDFPageOptions.d.ts +14 -8
  136. package/ts3.4/es/api/operations.d.ts +15 -0
  137. package/ts3.4/es/api/svg.d.ts +7 -1
  138. package/ts3.4/es/types/index.d.ts +4 -4
@@ -33,11 +33,13 @@ import {
33
33
  appendBezierCurve,
34
34
  FillRule,
35
35
  fillEvenOdd,
36
+ concatTransformationMatrix,
36
37
  } from './operators';
37
38
  import { Rotation, degrees, toRadians } from './rotations';
38
39
  import { svgPathToOperators } from './svgPath';
39
40
  import { PDFHexString, PDFName, PDFNumber, PDFOperator } from '../core';
40
41
  import { asNumber } from './objects';
42
+ import type { Space, TransformationMatrix } from '../types'
41
43
 
42
44
  export interface DrawTextOptions {
43
45
  color: Color;
@@ -49,8 +51,27 @@ export interface DrawTextOptions {
49
51
  x: number | PDFNumber;
50
52
  y: number | PDFNumber;
51
53
  graphicsState?: string | PDFName;
54
+ matrix?: TransformationMatrix;
55
+ clipSpaces?: Space[];
52
56
  }
53
57
 
58
+ const clipSpace = ({
59
+ topLeft,
60
+ topRight,
61
+ bottomRight,
62
+ bottomLeft
63
+ }: Space) =>
64
+ [
65
+ moveTo(topLeft.x, topLeft.y),
66
+ lineTo(topRight.x, topRight.y),
67
+ lineTo(bottomRight.x, bottomRight.y),
68
+ lineTo(bottomLeft.x, bottomLeft.y),
69
+ closePath(),
70
+ clip(),
71
+ endPath(),
72
+ ]
73
+ const clipSpaces = (spaces: Space[]) => spaces.flatMap(clipSpace)
74
+
54
75
  export const drawText = (
55
76
  line: PDFHexString,
56
77
  options: DrawTextOptions,
@@ -84,6 +105,8 @@ export const drawLinesOfText = (
84
105
  const operators = [
85
106
  pushGraphicsState(),
86
107
  options.graphicsState && setGraphicsState(options.graphicsState),
108
+ ...(options.clipSpaces ? clipSpaces(options.clipSpaces) : []),
109
+ options.matrix && concatTransformationMatrix(...options.matrix),
87
110
  beginText(),
88
111
  setFillingColor(options.color),
89
112
  setFontAndSize(options.font, options.size),
@@ -116,11 +139,15 @@ export const drawImage = (
116
139
  xSkew: Rotation;
117
140
  ySkew: Rotation;
118
141
  graphicsState?: string | PDFName;
142
+ matrix?: TransformationMatrix;
143
+ clipSpaces?: Space[];
119
144
  },
120
145
  ): PDFOperator[] =>
121
146
  [
122
147
  pushGraphicsState(),
123
148
  options.graphicsState && setGraphicsState(options.graphicsState),
149
+ ...(options.clipSpaces ? clipSpaces(options.clipSpaces) : []),
150
+ options.matrix && concatTransformationMatrix(...options.matrix),
124
151
  translate(options.x, options.y),
125
152
  rotateRadians(toRadians(options.rotate)),
126
153
  scale(options.width, options.height),
@@ -162,10 +189,14 @@ export const drawLine = (options: {
162
189
  dashPhase?: number | PDFNumber;
163
190
  lineCap?: LineCapStyle;
164
191
  graphicsState?: string | PDFName;
192
+ matrix?: TransformationMatrix;
193
+ clipSpaces?: Space[];
165
194
  }) =>
166
195
  [
167
196
  pushGraphicsState(),
168
197
  options.graphicsState && setGraphicsState(options.graphicsState),
198
+ ...(options.clipSpaces ? clipSpaces(options.clipSpaces) : []),
199
+ options.matrix && concatTransformationMatrix(...options.matrix),
169
200
  options.color && setStrokingColor(options.color),
170
201
  setLineWidth(options.thickness),
171
202
  setDashPattern(options.dashArray ?? [], options.dashPhase ?? 0),
@@ -192,8 +223,9 @@ export const drawRectangle = (options: {
192
223
  borderDashArray?: (number | PDFNumber)[];
193
224
  borderDashPhase?: number | PDFNumber;
194
225
  graphicsState?: string | PDFName;
195
- }) =>
196
- [
226
+ matrix?: TransformationMatrix;
227
+ clipSpaces?: Space[];
228
+ }) => [
197
229
  pushGraphicsState(),
198
230
  options.graphicsState && setGraphicsState(options.graphicsState),
199
231
  options.color && setFillingColor(options.color),
@@ -201,6 +233,8 @@ export const drawRectangle = (options: {
201
233
  setLineWidth(options.borderWidth),
202
234
  options.borderLineCap && setLineCap(options.borderLineCap),
203
235
  setDashPattern(options.borderDashArray ?? [], options.borderDashPhase ?? 0),
236
+ ...(options.clipSpaces ? clipSpaces(options.clipSpaces) : []),
237
+ options.matrix && concatTransformationMatrix(...options.matrix),
204
238
  translate(options.x, options.y),
205
239
  rotateRadians(toRadians(options.rotate)),
206
240
  skewRadians(toRadians(options.xSkew), toRadians(options.ySkew)),
@@ -300,12 +334,16 @@ export const drawEllipse = (options: {
300
334
  borderDashPhase?: number | PDFNumber;
301
335
  graphicsState?: string | PDFName;
302
336
  borderLineCap?: LineCapStyle;
337
+ matrix?: TransformationMatrix;
338
+ clipSpaces?: Space[];
303
339
  }) =>
304
340
  [
305
341
  pushGraphicsState(),
306
342
  options.graphicsState && setGraphicsState(options.graphicsState),
307
343
  options.color && setFillingColor(options.color),
308
344
  options.borderColor && setStrokingColor(options.borderColor),
345
+ ...(options.clipSpaces ? clipSpaces(options.clipSpaces) : []),
346
+ options.matrix && concatTransformationMatrix(...options.matrix),
309
347
  setLineWidth(options.borderWidth),
310
348
  options.borderLineCap && setLineCap(options.borderLineCap),
311
349
  setDashPattern(options.borderDashArray ?? [], options.borderDashPhase ?? 0),
@@ -350,12 +388,16 @@ export const drawSvgPath = (
350
388
  borderDashPhase?: number | PDFNumber;
351
389
  borderLineCap?: LineCapStyle;
352
390
  graphicsState?: string | PDFName;
353
- fillRule?: FillRule
391
+ fillRule?: FillRule;
392
+ matrix?: TransformationMatrix;
393
+ clipSpaces?: Space[];
354
394
  },
355
395
  ) =>
356
396
  [
357
397
  pushGraphicsState(),
358
398
  options.graphicsState && setGraphicsState(options.graphicsState),
399
+ ...(options.clipSpaces ? clipSpaces(options.clipSpaces) : []),
400
+ options.matrix && concatTransformationMatrix(...options.matrix),
359
401
 
360
402
  translate(options.x, options.y),
361
403
  rotateRadians(toRadians(options.rotate ?? degrees(0))),