@ironsoftware/ironpdf
Version:
IronPDF for Node
127 lines (118 loc) • 3.15 kB
text/typescript
import {ServiceError} from "@grpc/grpc-js";
import {IronPdfServiceClient} from "../../generated_proto/ironpdfengineproto/IronPdfService";
import {Access} from "../../access";
import {EmptyResultP__Output} from "../../generated_proto/ironpdfengineproto/EmptyResultP";
import {
chunkBuffer,
handleEmptyResultP__Output,
handleRemoteException
} from "../util";
import fs from "fs";
import {PdfDocumentResultP__Output} from "../../generated_proto/ironpdfengineproto/PdfDocumentResultP";
export enum PdfAVersions {
PdfA1b = 1,
PdfA2b = 2,
PdfA3b = 3,
PdfA1a = 5,
PdfA2a = 6,
PdfA3a = 7,
PdfA4 = 8,
PdfA4e = 9,
PdfA4f = 10
}
export enum PdfUAVersions {
PdfUA1 = 1,
PdfUA2 = 2
}
export async function toPdfA(id: string, pdfaVersion: PdfAVersions, customICCFilePath?: string): Promise<void> {
console.log(pdfaVersion);
const client: IronPdfServiceClient = await Access.ensureConnection();
return new Promise(
(resolve: () => void, reject: (errorMsg: string) => void) => {
const stream = client.Pdfium_ConvertToPdfA(
(
err: ServiceError | null,
value: PdfDocumentResultP__Output | undefined
) => {
if (err) {
reject(`${err.name}/n${err.message}`);
} else if (value) {
if (value?.exception) {
handleRemoteException(value.exception, reject);
}else{
resolve()
}
}
}
);
stream.write({
info: {
document: {documentId: id},
pdfaVersion: pdfaVersion
}
})
if (customICCFilePath) {
chunkBuffer(fs.readFileSync(customICCFilePath)).forEach((chunk) => {
stream.write({
iccBytesChunk: chunk
});
});
} else {
stream.write({
iccBytesChunk: Buffer.alloc(0)
});
}
stream.end()
}
);
}
export async function toPdfUA(id: string, naturalLanguages: number, pdfUaVersion: PdfUAVersions = PdfUAVersions.PdfUA1): Promise<void> {
const client: IronPdfServiceClient = await Access.ensureConnection();
return new Promise(
(resolve: () => void, reject: (errorMsg: string) => void) => {
client.Pdfium_ConvertToPdfUA(
{
document: { documentId: id },
lang: naturalLanguages,
pdfUaVersion: pdfUaVersion,
},
(
err: ServiceError | null,
value: EmptyResultP__Output | undefined
) => {
if (err) {
reject(`${err.name}/n${err.message}`);
} else if (value) {
handleEmptyResultP__Output(value, reject);
resolve();
}
}
);
}
);
}
export async function toPdfUAForScreenReader(id: string, htmlDom: string, naturalLanguages: number): Promise<void> {
const client: IronPdfServiceClient = await Access.ensureConnection();
return new Promise(
(resolve: () => void, reject: (errorMsg: string) => void) => {
client.Pdfium_ConvertToPdfUAForScreenReader(
{
document: { documentId: id },
htmlDom: htmlDom,
lang: naturalLanguages,
},
(
err: ServiceError | null,
value: EmptyResultP__Output | undefined
) => {
if (err) {
reject(`${err.name}/n${err.message}`);
} else if (value) {
handleEmptyResultP__Output(value, reject);
resolve();
}
}
);
}
);
}