@ironsoftware/ironpdf
Version:
IronPDF for Node
76 lines • 3.32 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractRawImages = exports.rasterizeToImageBuffers = void 0;
const access_1 = require("../../access");
const util_1 = require("../util");
function rasterizeToImageBuffers(id, pdfPageSelection) {
return __awaiter(this, void 0, void 0, function* () {
const client = yield access_1.Access.ensureConnection();
const pi = yield (0, util_1.AsyncPdfPageSelectionToIndexes)(id, pdfPageSelection);
return new Promise((resolve, reject) => {
const stream = client.pdfiumImagePdfToImages({
document: { documentId: id },
dpi: 96,
pageIndexes: pi,
});
handleImageResultStream(stream, resolve, reject);
});
});
}
exports.rasterizeToImageBuffers = rasterizeToImageBuffers;
function extractRawImages(id, pdfPageSelection) {
return __awaiter(this, void 0, void 0, function* () {
const client = yield access_1.Access.ensureConnection();
const pi = yield (0, util_1.AsyncPdfPageSelectionToIndexes)(id, pdfPageSelection);
return new Promise((resolve, reject) => {
const stream = client.pdfiumImageExtractAllRawImages({
document: { documentId: id },
pageIndexes: pi,
});
handleImageResultStream(stream, resolve, reject);
});
});
}
exports.extractRawImages = extractRawImages;
function handleImageResultStream(stream, resolve, reject) {
const temp = [];
stream.on("data", (data) => {
if (data.exception) {
reject(`${data.exception.message}/n${data.exception.remoteStackTrace}`);
}
else if (data.rawImagesChunk) {
if (data.rawImagesChunk) {
temp.push({
imageIndex: data.rawImagesChunk.imageIndex,
buffer: data.rawImagesChunk.rawImageChunk,
});
}
}
});
stream.on("end", () => {
const groupedData = temp.reduce((result, item) => {
if ((0, util_1.isNullOrUndefined)(result[item.imageIndex])) {
result[item.imageIndex] = Buffer.from([]);
}
const oldItem = result[item.imageIndex];
if (!(0, util_1.isNullOrUndefined)(oldItem)) {
result[item.imageIndex] = Buffer.concat([
oldItem,
item.buffer,
]);
}
return result;
}, {});
return resolve(Object.values(groupedData));
});
}
//# sourceMappingURL=image.js.map