Socket
Socket
Sign inDemoInstall

docx-builder

Package Overview
Dependencies
4
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.4 to 1.0.5

103

index.js

@@ -173,9 +173,74 @@ var fs = require('fs');

this.insertDocxSync = function(path){
this.mediaFiles = [];
this.getExternalDocxRawXml = function(docxData)
{
var zip = new JSZip(docxData);
var xml = Utf8ArrayToString(zip.file("word/document.xml")._data.getContent());
var zip = new JSZip(fs.readFileSync(path,"binary"));
var xml = Utf8ArrayToString(zip.file("word/document.xml")._data.getContent());
var mediaFolderName = "word/media";
var mediaFolder = zip.folder(mediaFolderName);
var relsXml = Utf8ArrayToString(zip.file("word/_rels/document.xml.rels")._data.getContent());
for(var file in mediaFolder.files)
{
if(file.startsWith("word/media") && file != "word/media/")
{
var oldRId = "";
var newRId = "";
var rType = "";
var newFile = file;
var indexOfOldRel = relsXml.indexOf(file.substr(5));
if(indexOfOldRel != -1)
{
var left = indexOfOldRel;
var right = indexOfOldRel;
while(left > 0) { left--; if(relsXml[left] == '<') break; }
while(right < relsXml.length) { right++; if(relsXml[right] == '>') break; }
var relTag = relsXml.substr(left);
relTag = relTag.substr(0,right-left+1).split(' ');
for(var i=0; i < relTag.length; i++)
{
var item = relTag[i];
if(item.startsWith('Id="'))
{
oldRId = item.substr(4);
oldRId = oldRId.substr(0, oldRId.length - 1);
}
else if(item.startsWith('Type="'))
{
rType = item.substr(6);
rType = rType.substr(0, rType.length - 1);
}
}
var hrTime = process.hrtime();
var newId = hrTime[0] + "" + hrTime[1];
newRId = "rId" + newId;
var fileExt = "." + newFile.split('.').pop();
newFile = newFile.substr(0, newFile.length - fileExt.length) + newId + fileExt;
xml = xml.replace("\"" + oldRId + "\"", "\"" + newRId + "\"");
this.mediaFiles.push({ name: newFile, data: mediaFolder.files[file]._data, rId: newRId, rType: rType });
}
}
}
xml = xml.substring(xml.indexOf("<w:body>") + 8);
xml = xml.substring(0, xml.indexOf("</w:body>"));
xml = xml.substring(0, xml.indexOf("<w:sectPr"));
return xml;
}
this.insertDocxSync = function(path){
var xml = this.getExternalDocxRawXml(fs.readFileSync(path,"binary"));
this.insertRaw(xml);

@@ -190,8 +255,3 @@ }

{
var zip = new JSZip(data);
var xml = Utf8ArrayToString(zip.file("word/document.xml")._data.getContent());
xml = xml.substring(xml.indexOf("<w:body>") + 8);
xml = xml.substring(0, xml.indexOf("</w:body>"));
xml = xml.substring(0, xml.indexOf("<w:sectPr"));
var xml = this.getExternalDocxRawXml(data);
this.insertRaw(xml);

@@ -207,3 +267,21 @@ callback(null);

var zip = new JSZip(template);
var relsXml = "";
if(this.mediaFiles.length > 0)
{
relsXml = Utf8ArrayToString(zip.file("word/_rels/document.xml.rels")._data.getContent());
for(var i=0; i < this.mediaFiles.length; i++)
{
var mediaFile = this.mediaFiles[i];
zip.file(mediaFile.name, mediaFile.data);
relsXml = relsXml.replace('</Relationships>', '<Relationship Id="' + mediaFile.rId + '" Type="' + mediaFile.rType + '" Target="' + mediaFile.name.substr(5) + '"/></Relationships>');
}
zip.file("word/_rels/document.xml.rels", relsXml);
}
//zip.file("word/media/image1.png", algo._data);
var doc = new Docxtemplater().loadZip(zip);

@@ -213,5 +291,8 @@

doc.render();
var buf = doc.getZip().generate({type:"nodebuffer"});
fs.writeFile(filepath,buf, err);
}

@@ -218,0 +299,0 @@ }

2

package.json
{
"name": "docx-builder",
"version": "1.0.4",
"version": "1.0.5",
"description": "Easily create or merge DOCX files from Node.js",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -13,3 +13,3 @@ # docx-builder

View in [npm] (https://www.npmjs.com/package/docx-builder)
View in [npm](https://www.npmjs.com/package/docx-builder)

@@ -89,3 +89,4 @@ # Example

docx.insertDocxSync(__dirname+"/test1.docx");
//You can also do this asynchronously using the insertDocx method.
docx.insertDocxSync(__dirname+"/test1.docx");
docx.insertDocxSync(__dirname+"/test2.docx");

@@ -92,0 +93,0 @@ docx.insertDocxSync(__dirname+"/test3.docx");

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc