https://www.npmjs.com/package/page-count
https://elma365.com/ru/help/platform/npm-package.html
https://elma365.com/ru/help/platform/extention-api.html
Если именно в одном pdf может быть A4\A3 и надо получить их кол-во. То можно взять библиотеку pdf-lib
Код:
import { DocxCounter, OdtCounter, PdfCounter, PptxCounter } from "page-count";
async function count(req: HttpApiRequest): Promise<HttpResponse | void> {
const response = new HttpResponse()
const id = req.query?.\['id'\] as string
const file = await System.files.search().where(f => f.id.eq(id)).first();
if (file) {
const arrayBuffer = await (await fetch((await file.getDownloadUrl()))).arrayBuffer();
let u = new Uint8Array(arrayBuffer);
let file_extension = await ext(file.data.name)
let page_count;
if (file_extension == 'pdf') {
page_count = await PdfCounter.count(u);
} else if (file_extension == 'docx') {
page_count = await DocxCounter.count(u);
} else {
page_count = 0
}
response
.status(200)
.json({
msg: 'success',
ext : file_extension,
page_count: page_count
})
.set('Content-Type', 'application/json')
}
else {
response
.status(404)
.json({
msg: 'error: file not found'
})
.set('Content-Type', 'application/json')
}
return response
}
async function ext(name: string) {
let m = name.match(/.(\[^.\]+)$/)
return m && m\[1\]