@chialab/pdfjs-lib 1.0.0-alpha.17 → 1.0.0-alpha.18
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/browser/index.js +63 -53
- package/dist/lib/utils.d.ts +5 -1
- package/dist/node/index.js +63 -53
- package/package.json +1 -1
package/dist/browser/index.js
CHANGED
|
@@ -26199,14 +26199,16 @@ async function createTextLayer(page, {
|
|
|
26199
26199
|
};
|
|
26200
26200
|
const getCanvasContext = async (inputLang = null) => {
|
|
26201
26201
|
const lang = inputLang || "";
|
|
26202
|
-
let
|
|
26203
|
-
if (!
|
|
26204
|
-
|
|
26205
|
-
|
|
26206
|
-
|
|
26207
|
-
|
|
26208
|
-
|
|
26209
|
-
|
|
26202
|
+
let canvasAndContext = canvasCache.get(lang);
|
|
26203
|
+
if (!canvasAndContext) {
|
|
26204
|
+
canvasAndContext = await canvasFactory.create(
|
|
26205
|
+
100,
|
|
26206
|
+
100
|
|
26207
|
+
);
|
|
26208
|
+
canvasAndContext.canvas.lang = lang;
|
|
26209
|
+
canvasCache.set(lang, canvasAndContext);
|
|
26210
|
+
}
|
|
26211
|
+
return canvasAndContext.context;
|
|
26210
26212
|
};
|
|
26211
26213
|
const getAscent = (fontFamily) => {
|
|
26212
26214
|
const cachedAscent = ascentCache.get(fontFamily);
|
|
@@ -26390,54 +26392,55 @@ async function createTextLayer(page, {
|
|
|
26390
26392
|
if (!id) {
|
|
26391
26393
|
return;
|
|
26392
26394
|
}
|
|
26393
|
-
|
|
26394
|
-
|
|
26395
|
-
|
|
26396
|
-
|
|
26397
|
-
|
|
26398
|
-
if (!imgData?.bitmap && !imgData?.data) {
|
|
26399
|
-
return;
|
|
26400
|
-
}
|
|
26401
|
-
const { context } = await canvasFactory.create(
|
|
26402
|
-
imgData.width,
|
|
26403
|
-
imgData.height
|
|
26404
|
-
);
|
|
26405
|
-
if (imgData.bitmap) {
|
|
26406
|
-
context.drawImage(imgData.bitmap, 0, 0);
|
|
26407
|
-
} else if (imgData.data) {
|
|
26408
|
-
if (imgData.kind === ImageKind.RGB_24BPP) {
|
|
26409
|
-
const rgbaArray = new Uint8ClampedArray(
|
|
26410
|
-
imgData.width * imgData.height * 4
|
|
26411
|
-
);
|
|
26412
|
-
for (let i = 0, j = 0; i < imgData.data.length; i += 3, j += 4) {
|
|
26413
|
-
rgbaArray[j] = imgData.data[i];
|
|
26414
|
-
rgbaArray[j + 1] = imgData.data[i + 1];
|
|
26415
|
-
rgbaArray[j + 2] = imgData.data[i + 2];
|
|
26416
|
-
rgbaArray[j + 3] = 255;
|
|
26395
|
+
await Promise.all(
|
|
26396
|
+
getMarkedObjects(id).map(async (imageId) => {
|
|
26397
|
+
const imgData = getObject(imageId);
|
|
26398
|
+
if (!imgData?.bitmap && !imgData?.data) {
|
|
26399
|
+
return;
|
|
26417
26400
|
}
|
|
26418
|
-
const
|
|
26419
|
-
rgbaArray,
|
|
26401
|
+
const canvasAndContext = await canvasFactory.create(
|
|
26420
26402
|
imgData.width,
|
|
26421
26403
|
imgData.height
|
|
26422
26404
|
);
|
|
26423
|
-
|
|
26424
|
-
|
|
26425
|
-
|
|
26426
|
-
imgData.
|
|
26427
|
-
|
|
26428
|
-
|
|
26405
|
+
if (imgData.bitmap) {
|
|
26406
|
+
canvasAndContext.context.drawImage(imgData.bitmap, 0, 0);
|
|
26407
|
+
} else if (imgData.data) {
|
|
26408
|
+
if (imgData.kind === ImageKind.RGB_24BPP) {
|
|
26409
|
+
const rgbaArray = new Uint8ClampedArray(
|
|
26410
|
+
imgData.width * imgData.height * 4
|
|
26411
|
+
);
|
|
26412
|
+
for (let i = 0, j = 0; i < imgData.data.length; i += 3, j += 4) {
|
|
26413
|
+
rgbaArray[j] = imgData.data[i];
|
|
26414
|
+
rgbaArray[j + 1] = imgData.data[i + 1];
|
|
26415
|
+
rgbaArray[j + 2] = imgData.data[i + 2];
|
|
26416
|
+
rgbaArray[j + 3] = 255;
|
|
26417
|
+
}
|
|
26418
|
+
const imageData = new ImageData(
|
|
26419
|
+
rgbaArray,
|
|
26420
|
+
imgData.width,
|
|
26421
|
+
imgData.height
|
|
26422
|
+
);
|
|
26423
|
+
canvasAndContext.context.putImageData(imageData, 0, 0);
|
|
26424
|
+
} else {
|
|
26425
|
+
const imageData = new ImageData(
|
|
26426
|
+
imgData.data,
|
|
26427
|
+
imgData.width,
|
|
26428
|
+
imgData.height
|
|
26429
|
+
);
|
|
26430
|
+
canvasAndContext.context.putImageData(imageData, 0, 0);
|
|
26431
|
+
}
|
|
26432
|
+
}
|
|
26433
|
+
const imgSrc = await toDataUrl(
|
|
26434
|
+
await canvasToData(canvasAndContext.canvas)
|
|
26429
26435
|
);
|
|
26430
|
-
|
|
26431
|
-
|
|
26432
|
-
|
|
26433
|
-
|
|
26434
|
-
|
|
26436
|
+
canvasFactory.destroy(canvasAndContext);
|
|
26437
|
+
const img = {
|
|
26438
|
+
role: "img",
|
|
26439
|
+
src: imgSrc
|
|
26440
|
+
};
|
|
26441
|
+
parent.children.push(img);
|
|
26442
|
+
})
|
|
26435
26443
|
);
|
|
26436
|
-
const img = {
|
|
26437
|
-
role: "img",
|
|
26438
|
-
src: imgSrc
|
|
26439
|
-
};
|
|
26440
|
-
parent.children.push(img);
|
|
26441
26444
|
}
|
|
26442
26445
|
})
|
|
26443
26446
|
);
|
|
@@ -26468,12 +26471,16 @@ async function createTextLayer(page, {
|
|
|
26468
26471
|
parent.children.push(span.node);
|
|
26469
26472
|
}
|
|
26470
26473
|
};
|
|
26471
|
-
const
|
|
26474
|
+
const getMarkedObjects = (markedContentId) => {
|
|
26475
|
+
const results = [];
|
|
26472
26476
|
let currentMarkedContent = null;
|
|
26473
26477
|
for (let i = 0; i < operatorList.fnArray.length; i++) {
|
|
26474
26478
|
const fnId = operatorList.fnArray[i];
|
|
26475
26479
|
const args = operatorList.argsArray[i];
|
|
26476
26480
|
if (fnId === OPS.endMarkedContent) {
|
|
26481
|
+
if (currentMarkedContent === markedContentId) {
|
|
26482
|
+
return results;
|
|
26483
|
+
}
|
|
26477
26484
|
currentMarkedContent = null;
|
|
26478
26485
|
continue;
|
|
26479
26486
|
}
|
|
@@ -26485,10 +26492,10 @@ async function createTextLayer(page, {
|
|
|
26485
26492
|
continue;
|
|
26486
26493
|
}
|
|
26487
26494
|
if (fnId === OPS.paintImageXObject) {
|
|
26488
|
-
|
|
26495
|
+
results.push(args[0]);
|
|
26489
26496
|
}
|
|
26490
26497
|
}
|
|
26491
|
-
return
|
|
26498
|
+
return results;
|
|
26492
26499
|
};
|
|
26493
26500
|
await loadDefaultFonts();
|
|
26494
26501
|
const reader = textContentSource.getReader();
|
|
@@ -26505,6 +26512,9 @@ async function createTextLayer(page, {
|
|
|
26505
26512
|
root?.children.map((child) => renderStructTreeNode(child, rootContainer)) ?? []
|
|
26506
26513
|
);
|
|
26507
26514
|
ascentCache.clear();
|
|
26515
|
+
for (const canvasAndContext of canvasCache.values()) {
|
|
26516
|
+
canvasFactory.destroy(canvasAndContext);
|
|
26517
|
+
}
|
|
26508
26518
|
canvasCache.clear();
|
|
26509
26519
|
return rootContainer;
|
|
26510
26520
|
}
|
package/dist/lib/utils.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { Canvas } from '@napi-rs/canvas';
|
|
2
|
+
export type CanvasAndContext = {
|
|
3
|
+
canvas: HTMLCanvasElement;
|
|
4
|
+
context: CanvasRenderingContext2D;
|
|
5
|
+
};
|
|
2
6
|
/**
|
|
3
7
|
* Convert a canvas to a buffer.
|
|
4
8
|
* @param canvas The canvas to convert.
|
|
@@ -11,7 +15,7 @@ export declare function canvasToData(canvas: HTMLCanvasElement | Canvas): Promis
|
|
|
11
15
|
* @param type The type of the data url. Defaults to 'image/png'.
|
|
12
16
|
* @returns A promise that resolves to the data url.
|
|
13
17
|
*/
|
|
14
|
-
export declare function toDataUrl(data: Uint8Array
|
|
18
|
+
export declare function toDataUrl(data: Uint8Array<ArrayBuffer>, type?: string): Promise<string>;
|
|
15
19
|
/**
|
|
16
20
|
* Ensure the object can be serialized and unserialized as JSON.
|
|
17
21
|
* Internally it converts typed arrays to plain arrays.
|
package/dist/node/index.js
CHANGED
|
@@ -26806,14 +26806,16 @@ async function createTextLayer(page, {
|
|
|
26806
26806
|
};
|
|
26807
26807
|
const getCanvasContext = async (inputLang = null) => {
|
|
26808
26808
|
const lang = inputLang || "";
|
|
26809
|
-
let
|
|
26810
|
-
if (!
|
|
26811
|
-
|
|
26812
|
-
|
|
26813
|
-
|
|
26814
|
-
|
|
26815
|
-
|
|
26816
|
-
|
|
26809
|
+
let canvasAndContext = canvasCache.get(lang);
|
|
26810
|
+
if (!canvasAndContext) {
|
|
26811
|
+
canvasAndContext = await canvasFactory.create(
|
|
26812
|
+
100,
|
|
26813
|
+
100
|
|
26814
|
+
);
|
|
26815
|
+
canvasAndContext.canvas.lang = lang;
|
|
26816
|
+
canvasCache.set(lang, canvasAndContext);
|
|
26817
|
+
}
|
|
26818
|
+
return canvasAndContext.context;
|
|
26817
26819
|
};
|
|
26818
26820
|
const getAscent = (fontFamily) => {
|
|
26819
26821
|
const cachedAscent = ascentCache.get(fontFamily);
|
|
@@ -26997,54 +26999,55 @@ async function createTextLayer(page, {
|
|
|
26997
26999
|
if (!id) {
|
|
26998
27000
|
return;
|
|
26999
27001
|
}
|
|
27000
|
-
|
|
27001
|
-
|
|
27002
|
-
|
|
27003
|
-
|
|
27004
|
-
|
|
27005
|
-
if (!imgData?.bitmap && !imgData?.data) {
|
|
27006
|
-
return;
|
|
27007
|
-
}
|
|
27008
|
-
const { context } = await canvasFactory.create(
|
|
27009
|
-
imgData.width,
|
|
27010
|
-
imgData.height
|
|
27011
|
-
);
|
|
27012
|
-
if (imgData.bitmap) {
|
|
27013
|
-
context.drawImage(imgData.bitmap, 0, 0);
|
|
27014
|
-
} else if (imgData.data) {
|
|
27015
|
-
if (imgData.kind === ImageKind.RGB_24BPP) {
|
|
27016
|
-
const rgbaArray = new Uint8ClampedArray(
|
|
27017
|
-
imgData.width * imgData.height * 4
|
|
27018
|
-
);
|
|
27019
|
-
for (let i = 0, j = 0; i < imgData.data.length; i += 3, j += 4) {
|
|
27020
|
-
rgbaArray[j] = imgData.data[i];
|
|
27021
|
-
rgbaArray[j + 1] = imgData.data[i + 1];
|
|
27022
|
-
rgbaArray[j + 2] = imgData.data[i + 2];
|
|
27023
|
-
rgbaArray[j + 3] = 255;
|
|
27002
|
+
await Promise.all(
|
|
27003
|
+
getMarkedObjects(id).map(async (imageId) => {
|
|
27004
|
+
const imgData = getObject(imageId);
|
|
27005
|
+
if (!imgData?.bitmap && !imgData?.data) {
|
|
27006
|
+
return;
|
|
27024
27007
|
}
|
|
27025
|
-
const
|
|
27026
|
-
rgbaArray,
|
|
27008
|
+
const canvasAndContext = await canvasFactory.create(
|
|
27027
27009
|
imgData.width,
|
|
27028
27010
|
imgData.height
|
|
27029
27011
|
);
|
|
27030
|
-
|
|
27031
|
-
|
|
27032
|
-
|
|
27033
|
-
imgData.
|
|
27034
|
-
|
|
27035
|
-
|
|
27012
|
+
if (imgData.bitmap) {
|
|
27013
|
+
canvasAndContext.context.drawImage(imgData.bitmap, 0, 0);
|
|
27014
|
+
} else if (imgData.data) {
|
|
27015
|
+
if (imgData.kind === ImageKind.RGB_24BPP) {
|
|
27016
|
+
const rgbaArray = new Uint8ClampedArray(
|
|
27017
|
+
imgData.width * imgData.height * 4
|
|
27018
|
+
);
|
|
27019
|
+
for (let i = 0, j = 0; i < imgData.data.length; i += 3, j += 4) {
|
|
27020
|
+
rgbaArray[j] = imgData.data[i];
|
|
27021
|
+
rgbaArray[j + 1] = imgData.data[i + 1];
|
|
27022
|
+
rgbaArray[j + 2] = imgData.data[i + 2];
|
|
27023
|
+
rgbaArray[j + 3] = 255;
|
|
27024
|
+
}
|
|
27025
|
+
const imageData = new ImageData(
|
|
27026
|
+
rgbaArray,
|
|
27027
|
+
imgData.width,
|
|
27028
|
+
imgData.height
|
|
27029
|
+
);
|
|
27030
|
+
canvasAndContext.context.putImageData(imageData, 0, 0);
|
|
27031
|
+
} else {
|
|
27032
|
+
const imageData = new ImageData(
|
|
27033
|
+
imgData.data,
|
|
27034
|
+
imgData.width,
|
|
27035
|
+
imgData.height
|
|
27036
|
+
);
|
|
27037
|
+
canvasAndContext.context.putImageData(imageData, 0, 0);
|
|
27038
|
+
}
|
|
27039
|
+
}
|
|
27040
|
+
const imgSrc = await toDataUrl(
|
|
27041
|
+
await canvasToData(canvasAndContext.canvas)
|
|
27036
27042
|
);
|
|
27037
|
-
|
|
27038
|
-
|
|
27039
|
-
|
|
27040
|
-
|
|
27041
|
-
|
|
27043
|
+
canvasFactory.destroy(canvasAndContext);
|
|
27044
|
+
const img = {
|
|
27045
|
+
role: "img",
|
|
27046
|
+
src: imgSrc
|
|
27047
|
+
};
|
|
27048
|
+
parent.children.push(img);
|
|
27049
|
+
})
|
|
27042
27050
|
);
|
|
27043
|
-
const img = {
|
|
27044
|
-
role: "img",
|
|
27045
|
-
src: imgSrc
|
|
27046
|
-
};
|
|
27047
|
-
parent.children.push(img);
|
|
27048
27051
|
}
|
|
27049
27052
|
})
|
|
27050
27053
|
);
|
|
@@ -27075,12 +27078,16 @@ async function createTextLayer(page, {
|
|
|
27075
27078
|
parent.children.push(span.node);
|
|
27076
27079
|
}
|
|
27077
27080
|
};
|
|
27078
|
-
const
|
|
27081
|
+
const getMarkedObjects = (markedContentId) => {
|
|
27082
|
+
const results = [];
|
|
27079
27083
|
let currentMarkedContent = null;
|
|
27080
27084
|
for (let i = 0; i < operatorList.fnArray.length; i++) {
|
|
27081
27085
|
const fnId = operatorList.fnArray[i];
|
|
27082
27086
|
const args = operatorList.argsArray[i];
|
|
27083
27087
|
if (fnId === OPS.endMarkedContent) {
|
|
27088
|
+
if (currentMarkedContent === markedContentId) {
|
|
27089
|
+
return results;
|
|
27090
|
+
}
|
|
27084
27091
|
currentMarkedContent = null;
|
|
27085
27092
|
continue;
|
|
27086
27093
|
}
|
|
@@ -27092,10 +27099,10 @@ async function createTextLayer(page, {
|
|
|
27092
27099
|
continue;
|
|
27093
27100
|
}
|
|
27094
27101
|
if (fnId === OPS.paintImageXObject) {
|
|
27095
|
-
|
|
27102
|
+
results.push(args[0]);
|
|
27096
27103
|
}
|
|
27097
27104
|
}
|
|
27098
|
-
return
|
|
27105
|
+
return results;
|
|
27099
27106
|
};
|
|
27100
27107
|
await loadDefaultFonts();
|
|
27101
27108
|
const reader = textContentSource.getReader();
|
|
@@ -27112,6 +27119,9 @@ async function createTextLayer(page, {
|
|
|
27112
27119
|
root?.children.map((child) => renderStructTreeNode(child, rootContainer)) ?? []
|
|
27113
27120
|
);
|
|
27114
27121
|
ascentCache.clear();
|
|
27122
|
+
for (const canvasAndContext of canvasCache.values()) {
|
|
27123
|
+
canvasFactory.destroy(canvasAndContext);
|
|
27124
|
+
}
|
|
27115
27125
|
canvasCache.clear();
|
|
27116
27126
|
return rootContainer;
|
|
27117
27127
|
}
|
package/package.json
CHANGED