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 { 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 { 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 { 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(); } } ); } ); }