• Jobs
  • About Us
  • Jobs
    • Home
    • Jobs
    • Courses and challenges
  • Businesses
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

256
Views
¿Cómo adjuntar una imagen en la primera página en el archivo docx nodejs?

Ahora quiero implementar una funcionalidad para agregar una imagen de código QR en la primera página de un archivo docx existente en nodejs.

He probado estos tres métodos pero no he podido resolver.

  1. Probé con el paquete docx , pero solo permite crear un archivo docx desde cero.
  2. Probé con docxtemplater , pero solo permite reemplazar {%image} en un archivo de imagen.
  3. Intenté generar un nuevo archivo docx que contiene solo la imagen del código qr y fusionarlo con el archivo docx original. Pero no pude encontrar ningún paquete adecuado para docx merge.

¿Hay alguna solución aquí? Gracias por adelantado.

over 3 years ago · Santiago Trujillo
2 answers
Answer question

0

Es probable que sea mucho más difícil fusionar o editar archivos de forma limpia. Mi idea es analizar el archivo para que pueda editarlo en forma de una estructura JSON fácil de usar.

No he encontrado ninguna buena biblioteca para leer archivos docx, pero son solo archivos zip. Dentro encontrarás algunas carpetas y archivos. Uno de ellos es /word/document.xml . Ahí es donde se almacena el contenido real del documento.

Probablemente podría simplemente analizar el XML allí, inyectar el suyo propio y volver a serializarlo en el archivo. Si desea que esté centrado o tenga un tamaño específico, es posible que también deba editar el archivo de estilos.

Alternativamente, es posible que desee analizar el contenido y crear un documento de Word completamente nuevo utilizando el paquete docx , al que se refirió. Esto puede y probablemente resultará en que pierda estilos.

Depende de por qué está inyectando el código QR. Es posible que desee considerar una opción completamente nueva, como simplemente hacer que el usuario escriba lo que estaba escribiendo en un editor de Markdown y exportarlo como PDF. Lo más probable es que sea lo más fácil.

over 3 years ago · Santiago Trujillo Report

0

En realidad, es difícil adjuntar una imagen directamente al archivo docx.

Para hacerlo, debe agregar la imagen en la carpeta word/media , actualizar la relación en el archivo word/_rels/document.xml.rels y agregar la cadena xml adecuada que representa la imagen en el archivo word/document.xml .

Pero no funciona bien con la mayoría de los archivos y se corromperá aunque el archivo sea recuperable.

Entonces, mi sugerencia es agregar el texto {%image} en el archivo docx y reemplazarlo con la imagen usando docxtemplater .

Para agregar {%image} al archivo docx, debe agregar esta cadena xml <w:p><w:pPr><w:jc w:val="center"/></w:pPr><w:r><w:t xml:space="preserve">{%image}</w:t></w:r></w:p> en word/document.xml .

 const originFile = fs.readFileSync(path.resolve('origin.docx'), 'binary'); const originZip = await JSZip.loadAsync(originFile); const originDocumentFile = originZip.file(/^word\/document[0-9]*.xml$/)[0]; let originDocumentXml = await originDocumentFile.async("string"); const startIndex = originDocumentXml.indexOf("<w:body>") + 8; originDocumentXml = originDocumentXml.slice(0, startIndex) + '<w:p><w:pPr><w:jc w:val="center"/></w:pPr><w:r><w:t xml:space="preserve">{%image}</w:t></w:r></w:p>' + originDocumentXml.slice(startIndex); originZip.file(originDocumentFile.name, originDocumentXml); const updateFile = await originZip.generateAsync({ type: 'nodebuffer' }); fs.writeFile("output.docx", updateFile, function(err) {/*...*/});
over 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Show me some job opportunities
There's an error!