@pixldocs/canvas-renderer 0.5.210 → 0.5.211
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-DwYUddYW.js → index-C0tTvSFQ.js} +36 -16
- package/dist/index-C0tTvSFQ.js.map +1 -0
- package/dist/{index-54CXM_hR.cjs → index-d8U2oDzI.cjs} +36 -16
- package/dist/index-d8U2oDzI.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.js +1 -1
- package/dist/{vectorPdfExport-Ch6GbQqO.js → vectorPdfExport-BEGl71uB.js} +213 -39
- package/dist/vectorPdfExport-BEGl71uB.js.map +1 -0
- package/dist/{vectorPdfExport-BSK-Z1p4.cjs → vectorPdfExport-QzySzFJJ.cjs} +213 -39
- package/dist/vectorPdfExport-QzySzFJJ.cjs.map +1 -0
- package/package.json +1 -1
- package/dist/index-54CXM_hR.cjs.map +0 -1
- package/dist/index-DwYUddYW.js.map +0 -1
- package/dist/vectorPdfExport-BSK-Z1p4.cjs.map +0 -1
- package/dist/vectorPdfExport-Ch6GbQqO.js.map +0 -1
|
@@ -4071,6 +4071,11 @@ async function loadImageAsync(element, placeholder, fc, fabricRef, syncLockedRef
|
|
|
4071
4071
|
setObjectData(cropGroup, element.id);
|
|
4072
4072
|
cropGroup.__imageSrc = imageUrl;
|
|
4073
4073
|
cropGroup.__svgColorMap = nextSvgColorMap;
|
|
4074
|
+
cropGroup.set({
|
|
4075
|
+
flipX: element.flipX ?? false,
|
|
4076
|
+
flipY: element.flipY ?? false
|
|
4077
|
+
});
|
|
4078
|
+
cropGroup.setCoords();
|
|
4074
4079
|
finalObject = cropGroup;
|
|
4075
4080
|
} else {
|
|
4076
4081
|
setObjectData(img, element.id);
|
|
@@ -18965,9 +18970,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
|
|
|
18965
18970
|
}
|
|
18966
18971
|
return svgString;
|
|
18967
18972
|
}
|
|
18968
|
-
const resolvedPackageVersion = "0.5.
|
|
18973
|
+
const resolvedPackageVersion = "0.5.211";
|
|
18969
18974
|
const PACKAGE_VERSION = resolvedPackageVersion;
|
|
18970
|
-
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.
|
|
18975
|
+
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.211";
|
|
18971
18976
|
const roundParityValue = (value) => {
|
|
18972
18977
|
if (typeof value !== "number") return value;
|
|
18973
18978
|
return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
|
|
@@ -19027,7 +19032,7 @@ function detectSafariOrIos() {
|
|
|
19027
19032
|
return false;
|
|
19028
19033
|
}
|
|
19029
19034
|
}
|
|
19030
|
-
async function downscaleConfigRasterImages(config, maxEdgePx, maxDataUrlBytes = 2e6) {
|
|
19035
|
+
async function downscaleConfigRasterImages(config, maxEdgePx, maxDataUrlBytes = 2e6, jpegQuality = 0.85) {
|
|
19031
19036
|
if (!maxEdgePx || maxEdgePx <= 0) return 0;
|
|
19032
19037
|
if (typeof document === "undefined") return 0;
|
|
19033
19038
|
const targets = [];
|
|
@@ -19091,7 +19096,7 @@ async function downscaleConfigRasterImages(config, maxEdgePx, maxDataUrlBytes =
|
|
|
19091
19096
|
return null;
|
|
19092
19097
|
}
|
|
19093
19098
|
let scale = tooLargeByEdge ? maxEdgePx / longest : 1;
|
|
19094
|
-
let quality = 0.
|
|
19099
|
+
let quality = Math.max(0.4, Math.min(1, jpegQuality));
|
|
19095
19100
|
let best = null;
|
|
19096
19101
|
for (let attempt = 0; attempt < 4; attempt++) {
|
|
19097
19102
|
const tw = Math.max(1, Math.round(w * scale));
|
|
@@ -19115,7 +19120,7 @@ async function downscaleConfigRasterImages(config, maxEdgePx, maxDataUrlBytes =
|
|
|
19115
19120
|
}
|
|
19116
19121
|
const byteScale = Math.sqrt(maxDataUrlBytes / Math.max(1, outBytes)) * 0.92;
|
|
19117
19122
|
scale = Math.max(0.1, scale * Math.min(0.95, byteScale));
|
|
19118
|
-
quality = Math.max(0.
|
|
19123
|
+
quality = Math.max(0.4, quality - 0.06);
|
|
19119
19124
|
}
|
|
19120
19125
|
if (blobUrl) URL.revokeObjectURL(blobUrl);
|
|
19121
19126
|
return best;
|
|
@@ -19490,7 +19495,9 @@ class PixldocsRenderer {
|
|
|
19490
19495
|
title: options == null ? void 0 : options.title,
|
|
19491
19496
|
textMode: options == null ? void 0 : options.textMode,
|
|
19492
19497
|
forcePerElementPdf: options == null ? void 0 : options.forcePerElementPdf,
|
|
19493
|
-
maxImageEdgePx: options == null ? void 0 : options.maxImageEdgePx
|
|
19498
|
+
maxImageEdgePx: options == null ? void 0 : options.maxImageEdgePx,
|
|
19499
|
+
compressImages: options == null ? void 0 : options.compressImages,
|
|
19500
|
+
compressionQuality: options == null ? void 0 : options.compressionQuality
|
|
19494
19501
|
});
|
|
19495
19502
|
}
|
|
19496
19503
|
/**
|
|
@@ -19498,7 +19505,7 @@ class PixldocsRenderer {
|
|
|
19498
19505
|
* This is the primary PDF export API — mirrors renderFromForm() but returns a PDF.
|
|
19499
19506
|
*/
|
|
19500
19507
|
async renderPdfFromForm(options) {
|
|
19501
|
-
const { templateId, formSchemaId, sectionState, themeId, watermark, watermarkOptions, prefetched, title, fontBaseUrl, textMode, forcePerElementPdf, maxImageEdgePx } = options;
|
|
19508
|
+
const { templateId, formSchemaId, sectionState, themeId, watermark, watermarkOptions, prefetched, title, fontBaseUrl, textMode, forcePerElementPdf, maxImageEdgePx, compressImages, compressionQuality } = options;
|
|
19502
19509
|
const resolved = await resolveFromForm({
|
|
19503
19510
|
templateId,
|
|
19504
19511
|
formSchemaId,
|
|
@@ -19521,7 +19528,9 @@ class PixldocsRenderer {
|
|
|
19521
19528
|
watermark: shouldWatermark,
|
|
19522
19529
|
textMode,
|
|
19523
19530
|
forcePerElementPdf,
|
|
19524
|
-
maxImageEdgePx
|
|
19531
|
+
maxImageEdgePx,
|
|
19532
|
+
compressImages,
|
|
19533
|
+
compressionQuality
|
|
19525
19534
|
});
|
|
19526
19535
|
}
|
|
19527
19536
|
async renderById(templateId, formData, options) {
|
|
@@ -19568,13 +19577,20 @@ class PixldocsRenderer {
|
|
|
19568
19577
|
const hasUserDataImage = configHasUserDataImage(cloned);
|
|
19569
19578
|
const isSafariLike = detectSafariOrIos();
|
|
19570
19579
|
const shouldForcePerElement = forceMode === true ? true : forceMode === false ? false : false;
|
|
19580
|
+
const compressImagesOpt = options.compressImages ?? true;
|
|
19571
19581
|
const maxEdgeOpt = options.maxImageEdgePx ?? this.config.maxImageEdgePx;
|
|
19572
|
-
const effectiveMaxEdge = typeof maxEdgeOpt === "number" ? Math.max(0, maxEdgeOpt | 0) : hasUserDataImage ? 2048 : 0;
|
|
19582
|
+
const effectiveMaxEdge = typeof maxEdgeOpt === "number" ? Math.max(0, maxEdgeOpt | 0) : compressImagesOpt ? hasUserDataImage ? 2048 : 0 : 0;
|
|
19583
|
+
const downscaleQuality = compressImagesOpt ? typeof options.compressionQuality === "number" ? Math.max(0.4, Math.min(1, options.compressionQuality)) : 0.85 : 0.95;
|
|
19573
19584
|
if (effectiveMaxEdge > 0) {
|
|
19574
19585
|
try {
|
|
19575
|
-
const downscaled = await downscaleConfigRasterImages(
|
|
19586
|
+
const downscaled = await downscaleConfigRasterImages(
|
|
19587
|
+
cloned,
|
|
19588
|
+
effectiveMaxEdge,
|
|
19589
|
+
void 0,
|
|
19590
|
+
downscaleQuality
|
|
19591
|
+
);
|
|
19576
19592
|
if (downscaled > 0) {
|
|
19577
|
-
console.log(`[canvas-renderer][pdf-unified] downscaled ${downscaled} raster image(s) to <=${effectiveMaxEdge}px edge`);
|
|
19593
|
+
console.log(`[canvas-renderer][pdf-unified] downscaled ${downscaled} raster image(s) to <=${effectiveMaxEdge}px edge @ q=${downscaleQuality}`);
|
|
19578
19594
|
}
|
|
19579
19595
|
} catch (e) {
|
|
19580
19596
|
console.warn("[canvas-renderer][pdf-unified] image downscale pass failed (continuing with originals):", e);
|
|
@@ -19585,7 +19601,9 @@ class PixldocsRenderer {
|
|
|
19585
19601
|
hasUserDataImage,
|
|
19586
19602
|
isSafariLike,
|
|
19587
19603
|
shouldForcePerElement,
|
|
19588
|
-
effectiveMaxEdge
|
|
19604
|
+
effectiveMaxEdge,
|
|
19605
|
+
compressImages: compressImagesOpt,
|
|
19606
|
+
downscaleQuality
|
|
19589
19607
|
});
|
|
19590
19608
|
const stampPrefix = `__pixldocs_pdf_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
|
|
19591
19609
|
const pageIds = cloned.pages.map((p, i) => {
|
|
@@ -19646,7 +19664,7 @@ class PixldocsRenderer {
|
|
|
19646
19664
|
await this.waitForCanvasScene(container, cloned, i);
|
|
19647
19665
|
}
|
|
19648
19666
|
console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
|
|
19649
|
-
const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-
|
|
19667
|
+
const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-QzySzFJJ.cjs"));
|
|
19650
19668
|
const prepared = preparePagesForExport(
|
|
19651
19669
|
cloned.pages,
|
|
19652
19670
|
canvasWidth,
|
|
@@ -19663,7 +19681,9 @@ class PixldocsRenderer {
|
|
|
19663
19681
|
// path and use the live Fabric object PDF path instead, preserving live
|
|
19664
19682
|
// matrices/order so we do not regress into stale config-space layout.
|
|
19665
19683
|
skipLiveCanvasSvgFastPath: forceMode === true,
|
|
19666
|
-
useLiveCanvasObjectPdfPath: shouldForcePerElement && forceMode !== true
|
|
19684
|
+
useLiveCanvasObjectPdfPath: shouldForcePerElement && forceMode !== true,
|
|
19685
|
+
compressImages: options.compressImages ?? true,
|
|
19686
|
+
compressionQuality: options.compressionQuality
|
|
19667
19687
|
});
|
|
19668
19688
|
if (!result || typeof result === "undefined") {
|
|
19669
19689
|
throw new Error("exportMultiPagePdf returned no blob (returnBlob path failed)");
|
|
@@ -21830,7 +21850,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
|
|
|
21830
21850
|
if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
|
|
21831
21851
|
sanitizeSvgTreeForPdf(svgToDraw);
|
|
21832
21852
|
try {
|
|
21833
|
-
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-
|
|
21853
|
+
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-QzySzFJJ.cjs"));
|
|
21834
21854
|
try {
|
|
21835
21855
|
await logTextMeasurementDiagnostic(svgToDraw);
|
|
21836
21856
|
} catch {
|
|
@@ -22227,4 +22247,4 @@ exports.setAutoShrinkDebug = setAutoShrinkDebug;
|
|
|
22227
22247
|
exports.setBundledAssetPrefixes = setBundledAssetPrefixes;
|
|
22228
22248
|
exports.warmResolvedTemplateForPreview = warmResolvedTemplateForPreview;
|
|
22229
22249
|
exports.warmTemplateFromForm = warmTemplateFromForm;
|
|
22230
|
-
//# sourceMappingURL=index-
|
|
22250
|
+
//# sourceMappingURL=index-d8U2oDzI.cjs.map
|