Ошибка при попытке вставить qrcode в документ docx

Я загружаю файл docx на клиент и использую fast-xml-parser для синтаксического анализа файла docx в xml, перед этим, используя jszip, Открываю архив документов.

      const doc = fs.readFileSync(files.uploadFile.path);
const zip = new JSZip();
await zip.loadAsync(doc);
const xml = await zip?.file("word/document.xml")?.async("string");
const options = {
      attributeNamePrefix: "@_",
      attrNodeName: "attr", //default is 'false'
      textNodeName: "#text",
      ignoreAttributes: true,
      ignoreNameSpace: false,
      allowBooleanAttributes: false,
      parseNodeValue: true,
      parseAttributeValue: false,
      trimValues: true,
      cdataTagName: "__cdata", //default is 'false'
      cdataPositionChar: "\\c",
      localeRange: "", //To support non english character in tag/attribute values.
      parseTrueNumberOnly: false
};
let docObj = parser.parse(xml, options, true);
docObj['w:document'] = [...docObj['w:document'], await QRCode.toDataURL('2323'), 50, 330, { width: 50, height: 50 }];

После разбора пытаюсь вставить в конец документа qrcode (используя qrcode библиотека) и в результате возникает ошибка docObj.w:document is not iterable

Структура документа после разбора

      docObj:  {
  'w:document': { 'w:body': { 'w:p': [Array], 'w:sectPr': [Object] } }
}

Что я делаю не так, почему w: document не повторяется? Как можно вставить qrcode в документ?

Я также пробовал использовать docxtemplater читать файл docx

      const content = fs.readFileSync(files.uploadFile.path, 'binary');
const zip = new PizZip(content);
const doc = new Docxtemplater(zip, { paragraphLoop: true, linebreaks: true });
doc.setData('test');
doc.render();
const buf = doc.getZip().generate({type: 'nodebuffer'});
fs.writeFileSync('testDoc.docx', buf);

Но файл сохраняется без изменений, можно ли как-то вносить изменения в файл без заполнителей?

0 ответов

Другие вопросы по тегам