@libpdf/core 0.0.1-beta.14 → 0.0.1-beta.15
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.
- package/dist/index.d.mts +27 -1
- package/dist/index.mjs +45 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -4842,6 +4842,23 @@ interface DrawPageOptions {
|
|
|
4842
4842
|
height?: number;
|
|
4843
4843
|
/** Opacity 0-1 (default: 1.0, fully opaque) */
|
|
4844
4844
|
opacity?: number;
|
|
4845
|
+
/**
|
|
4846
|
+
* Rotation specification.
|
|
4847
|
+
* Can be a simple number (degrees) or an object with angle and origin.
|
|
4848
|
+
*
|
|
4849
|
+
* @example
|
|
4850
|
+
* ```typescript
|
|
4851
|
+
* // Simple rotation (around position x, y)
|
|
4852
|
+
* page.drawPage(embedded, { x: 100, y: 100, rotate: 45 });
|
|
4853
|
+
*
|
|
4854
|
+
* // Rotation with custom origin
|
|
4855
|
+
* page.drawPage(embedded, { x: 100, y: 100, rotate: { angle: 45, origin: "center" } });
|
|
4856
|
+
*
|
|
4857
|
+
* // Rotation with explicit origin coordinates
|
|
4858
|
+
* page.drawPage(embedded, { x: 100, y: 100, rotate: { angle: 45, origin: { x: 150, y: 150 } } });
|
|
4859
|
+
* ```
|
|
4860
|
+
*/
|
|
4861
|
+
rotate?: number | Rotation;
|
|
4845
4862
|
/** Draw as background behind existing content (default: false = foreground) */
|
|
4846
4863
|
background?: boolean;
|
|
4847
4864
|
}
|
|
@@ -4956,7 +4973,7 @@ declare class PDFPage {
|
|
|
4956
4973
|
* Use `{ background: true }` to draw behind existing content.
|
|
4957
4974
|
*
|
|
4958
4975
|
* @param embedded - The embedded page to draw
|
|
4959
|
-
* @param options - Drawing options (position, scale, opacity, background)
|
|
4976
|
+
* @param options - Drawing options (position, scale, rotate, opacity, background)
|
|
4960
4977
|
*
|
|
4961
4978
|
* @example
|
|
4962
4979
|
* ```typescript
|
|
@@ -4973,6 +4990,15 @@ declare class PDFPage {
|
|
|
4973
4990
|
*
|
|
4974
4991
|
* // Draw as a background
|
|
4975
4992
|
* page.drawPage(letterhead, { background: true });
|
|
4993
|
+
*
|
|
4994
|
+
* // Draw rotated 45 degrees counter-clockwise (around position x, y)
|
|
4995
|
+
* page.drawPage(stamp, { x: 100, y: 100, rotate: 45, scale: 0.5 });
|
|
4996
|
+
*
|
|
4997
|
+
* // Draw rotated around the center of the embedded page
|
|
4998
|
+
* page.drawPage(stamp, { x: 100, y: 100, rotate: { angle: 45, origin: "center" }, scale: 0.5 });
|
|
4999
|
+
*
|
|
5000
|
+
* // Draw rotated around a custom point
|
|
5001
|
+
* page.drawPage(stamp, { x: 100, y: 100, rotate: { angle: 90, origin: { x: 200, y: 200 } } });
|
|
4976
5002
|
* ```
|
|
4977
5003
|
*/
|
|
4978
5004
|
drawPage(embedded: PDFEmbeddedPage, options?: DrawPageOptions): void;
|
package/dist/index.mjs
CHANGED
|
@@ -9,7 +9,7 @@ import { createCMSECDSASignature } from "pkijs";
|
|
|
9
9
|
import { base64 } from "@scure/base";
|
|
10
10
|
|
|
11
11
|
//#region package.json
|
|
12
|
-
var version = "0.0.1-beta.
|
|
12
|
+
var version = "0.0.1-beta.15";
|
|
13
13
|
|
|
14
14
|
//#endregion
|
|
15
15
|
//#region src/objects/pdf-array.ts
|
|
@@ -24339,7 +24339,7 @@ var PDFPage = class PDFPage {
|
|
|
24339
24339
|
* Use `{ background: true }` to draw behind existing content.
|
|
24340
24340
|
*
|
|
24341
24341
|
* @param embedded - The embedded page to draw
|
|
24342
|
-
* @param options - Drawing options (position, scale, opacity, background)
|
|
24342
|
+
* @param options - Drawing options (position, scale, rotate, opacity, background)
|
|
24343
24343
|
*
|
|
24344
24344
|
* @example
|
|
24345
24345
|
* ```typescript
|
|
@@ -24356,6 +24356,15 @@ var PDFPage = class PDFPage {
|
|
|
24356
24356
|
*
|
|
24357
24357
|
* // Draw as a background
|
|
24358
24358
|
* page.drawPage(letterhead, { background: true });
|
|
24359
|
+
*
|
|
24360
|
+
* // Draw rotated 45 degrees counter-clockwise (around position x, y)
|
|
24361
|
+
* page.drawPage(stamp, { x: 100, y: 100, rotate: 45, scale: 0.5 });
|
|
24362
|
+
*
|
|
24363
|
+
* // Draw rotated around the center of the embedded page
|
|
24364
|
+
* page.drawPage(stamp, { x: 100, y: 100, rotate: { angle: 45, origin: "center" }, scale: 0.5 });
|
|
24365
|
+
*
|
|
24366
|
+
* // Draw rotated around a custom point
|
|
24367
|
+
* page.drawPage(stamp, { x: 100, y: 100, rotate: { angle: 90, origin: { x: 200, y: 200 } } });
|
|
24359
24368
|
* ```
|
|
24360
24369
|
*/
|
|
24361
24370
|
drawPage(embedded, options = {}) {
|
|
@@ -24377,9 +24386,40 @@ var PDFPage = class PDFPage {
|
|
|
24377
24386
|
});
|
|
24378
24387
|
ops.push(`/${gsName} gs`);
|
|
24379
24388
|
}
|
|
24380
|
-
|
|
24381
|
-
|
|
24382
|
-
|
|
24389
|
+
let rotateDegrees = 0;
|
|
24390
|
+
let rotateOriginX = x;
|
|
24391
|
+
let rotateOriginY = y;
|
|
24392
|
+
if (options.rotate !== void 0) if (typeof options.rotate === "number") rotateDegrees = options.rotate;
|
|
24393
|
+
else {
|
|
24394
|
+
rotateDegrees = options.rotate.angle;
|
|
24395
|
+
const bounds = {
|
|
24396
|
+
x,
|
|
24397
|
+
y,
|
|
24398
|
+
width: embedded.width * scaleX,
|
|
24399
|
+
height: embedded.height * scaleY
|
|
24400
|
+
};
|
|
24401
|
+
const defaultOrigin = {
|
|
24402
|
+
x,
|
|
24403
|
+
y
|
|
24404
|
+
};
|
|
24405
|
+
const origin = resolveRotationOrigin(options.rotate.origin, bounds, defaultOrigin);
|
|
24406
|
+
rotateOriginX = origin.x;
|
|
24407
|
+
rotateOriginY = origin.y;
|
|
24408
|
+
}
|
|
24409
|
+
if (rotateDegrees !== 0) {
|
|
24410
|
+
const radians = rotateDegrees * Math.PI / 180;
|
|
24411
|
+
const cos = Math.cos(radians);
|
|
24412
|
+
const sin = Math.sin(radians);
|
|
24413
|
+
ops.push(`1 0 0 1 ${this.formatNumber(rotateOriginX)} ${this.formatNumber(rotateOriginY)} cm`);
|
|
24414
|
+
ops.push(`${this.formatNumber(cos)} ${this.formatNumber(sin)} ${this.formatNumber(-sin)} ${this.formatNumber(cos)} 0 0 cm`);
|
|
24415
|
+
const offsetX = x - rotateOriginX - embedded.box.x * scaleX;
|
|
24416
|
+
const offsetY = y - rotateOriginY - embedded.box.y * scaleY;
|
|
24417
|
+
ops.push(`${this.formatNumber(scaleX)} 0 0 ${this.formatNumber(scaleY)} ${this.formatNumber(offsetX)} ${this.formatNumber(offsetY)} cm`);
|
|
24418
|
+
} else {
|
|
24419
|
+
const translateX = x - embedded.box.x * scaleX;
|
|
24420
|
+
const translateY = y - embedded.box.y * scaleY;
|
|
24421
|
+
ops.push(`${this.formatNumber(scaleX)} 0 0 ${this.formatNumber(scaleY)} ${this.formatNumber(translateX)} ${this.formatNumber(translateY)} cm`);
|
|
24422
|
+
}
|
|
24383
24423
|
ops.push(`/${xobjectName} Do`);
|
|
24384
24424
|
ops.push("Q");
|
|
24385
24425
|
const contentOps = ops.join("\n");
|