@ironsoftware/ironpdf
Version:
IronPDF for Node
135 lines • 6.06 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());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.compressInMemoryStream = exports.compressInMemory = exports.compressAndSaveAs = exports.compressStructTree = exports.compressImage = void 0;
const access_1 = require("../../access");
const util_1 = require("../util");
const stream_1 = require("stream");
const fs_1 = __importDefault(require("fs"));
function compressImage(id, imageQuality, scaleToVisibleSize = false) {
return __awaiter(this, void 0, void 0, function* () {
const client = yield access_1.Access.ensureConnection();
return new Promise((resolve, reject) => {
client.Pdfium_Compress_CompressImages({
document: { documentId: id },
scaleToVisibleSize: scaleToVisibleSize,
quality: imageQuality,
}, (err, value) => {
if (err) {
reject(`${err.name}/n${err.message}`);
}
else if (value) {
(0, util_1.handleEmptyResultP__Output)(value, reject);
resolve();
}
});
});
});
}
exports.compressImage = compressImage;
function compressStructTree(id) {
return __awaiter(this, void 0, void 0, function* () {
const client = yield access_1.Access.ensureConnection();
return new Promise((resolve, reject) => {
client.Pdfium_Compress_RemoveStructTree({
document: { documentId: id }
}, (err, value) => {
if (err) {
reject(`${err.name}/n${err.message}`);
}
else if (value) {
(0, util_1.handleEmptyResultP__Output)(value, reject);
resolve();
}
});
});
});
}
exports.compressStructTree = compressStructTree;
function compressAndSaveAs(id, outputPath, imageQuality) {
return __awaiter(this, void 0, void 0, function* () {
const client = yield access_1.Access.ensureConnection();
return new Promise((resolve, reject) => {
const request = Object.assign({ document: { documentId: id }, outputPath: "", password: "" }, (imageQuality !== undefined ? { jpeg: imageQuality } : {}));
const stream = client.QPdf_Compression_CompressAndSaveAs(request);
const buffers = [];
stream.on("data", (data) => {
if (data.exception) {
reject(`${data.exception.message}/n${data.exception.remoteStackTrace}`);
}
else if (data.resultChunk) {
buffers.push(data.resultChunk);
}
});
stream.on("error", (err) => {
reject(`${err.name}/n${err.message}`);
});
stream.on("end", () => {
fs_1.default.writeFileSync(outputPath, Buffer.concat(buffers));
resolve();
});
});
});
}
exports.compressAndSaveAs = compressAndSaveAs;
function compressInMemory(id, imageQuality) {
return __awaiter(this, void 0, void 0, function* () {
const client = yield access_1.Access.ensureConnection();
return new Promise((resolve, reject) => {
const request = Object.assign({ document: { documentId: id }, outputPath: "", password: "" }, (imageQuality !== undefined ? { jpeg: imageQuality } : {}));
const stream = client.QPdf_Compression_CompressAndSaveAs(request);
const buffers = [];
stream.on("data", (data) => {
if (data.exception) {
reject(`${data.exception.message}/n${data.exception.remoteStackTrace}`);
}
else if (data.resultChunk) {
buffers.push(data.resultChunk);
}
});
stream.on("error", (err) => {
reject(`${err.name}/n${err.message}`);
});
stream.on("end", () => {
resolve(Buffer.concat(buffers));
});
});
});
}
exports.compressInMemory = compressInMemory;
function compressInMemoryStream(id, imageQuality) {
return __awaiter(this, void 0, void 0, function* () {
const client = yield access_1.Access.ensureConnection();
const passThrough = new stream_1.PassThrough();
const request = Object.assign({ document: { documentId: id }, outputPath: "", password: "" }, (imageQuality !== undefined ? { jpeg: imageQuality } : {}));
const stream = client.QPdf_Compression_CompressAndSaveAs(request);
stream.on("data", (data) => {
if (data.exception) {
passThrough.destroy(new Error(`${data.exception.message}/n${data.exception.remoteStackTrace}`));
}
else if (data.resultChunk) {
passThrough.write(data.resultChunk);
}
});
stream.on("error", (err) => {
passThrough.destroy(err);
});
stream.on("end", () => {
passThrough.end();
});
return passThrough;
});
}
exports.compressInMemoryStream = compressInMemoryStream;
//# sourceMappingURL=compress.js.map