es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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);
Tags:  , ,

Answer

  1. Avatar for 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 y fs 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 archivo app.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.

Comments are closed.