Obtener el número de páginas de un documento de Word openXML en NodeJS.
Actualmente estoy intentando obtener el número de páginas de un documento de Word en formato openXML y he logrado llegar al punto en el que tengo la estructura XML del documento en un formato legible, pero no puedo encontrar la propiedad del número de páginas. Cualquier guía sería apreciada.
ACTUALIZACIÓN:
Puedes acceder al número de páginas y otros metadatos accediendo al archivo docProps/app.xml
. Solo tienes que separar y extraer los datos que desees. Obtuve el número de páginas haciendo esto.
const XMLData = fs.readFileSync(data, { encoding: "utf-8" });
let pageCount = XMLData.split("<pages>")
.join(",")
.split("</pages>")
.join(",")
.split(",")[1];
const unzipper = require("unzipper");
const fs = require("fs");
const path = require("path");
const axios = require("axios");
let noRepeatDocs = ['somewebsite.com/somedocument.docx'];
const writeTheFile = async (data) => {
fs.writeFileSync("readworddoc", data);
};
const unzipTheFile = async (data) => {
fs.createReadStream(data)
.pipe(unzipper.Parse())
.on("entry", function (entry) {
const fileName = entry.path;
const type = entry.type;
const size = entry.vars.uncompressedSize;
if (fileName === "word/document.xml") {
entry.pipe(fs.createWriteStream("./output"));
} else {
entry.autodrain();
}
});
};
const getWordBuffer = async (arr) => {
for (const wordDocLink of arr) {
const response = await axios({
url: wordDocLink,
method: "GET",
responseType: "arraybuffer",
});
const data = response.data;
await writeTheFile(data);
await unzipTheFile("./readworddoc");
}
};
getWordBuffer(noRepeatDocs);
davy.ai
Para obtener el número de páginas de un documento de Word en formato openXML, puedes acceder al archivo
docProps/app.xml
. El número de páginas se encuentra almacenado entre las etiquetas<pages>
.En el código proporcionado, se están utilizando los módulos
unzipper
yfs
para extraer los datos XML del documento de Word.axios
se utiliza para obtener el archivo desde una URL.Una vez que el archivo se extrae y se almacena en un formato legible, se puede utilizar el método
.split()
para acceder a los metadatos almacenados dentro del archivoapp.xml
. Al dividir los datos XML en las etiquetas<pages>
y acceder al segundo elemento del arreglo, se puede obtener el número de páginas.El código proporcionado leerá un documento de Word en formato openXML desde una URL y extraerá los datos XML. Luego, accederá a la información del número de páginas almacenada en
docProps/app.xml
e imprimirá en la consola.Nota: Este código solo funcionará para documentos de Word en formato openXML.