Проверка загруженного шаблона Word Javascript

Я ищу пакет npm или способ доступа к загруженному слову .docx на стороне клиента в браузере. Я хочу проверить файл .docx пользователя, который будет сравниваться с массивом переменных (который создается динамически), чтобы подтвердить, что файл .docx содержит все используемые переменные.

Предпочтительным методом является загрузка .docx, доступ к содержимому docx на стороне клиента и поиск переменных (формат для переменных шаблона будет усы {{ }} ) на стороне клиента перед отправкой формы на сервер.

Пример будет похож на этот.


DOCX в формате Word

Меня зовут {{ name }}, и я люблю {{ спорт }}. Я также люблю наслаждаться {{ едой }} со стаканом {{ напитка }}.


const templateVariables = ["name","sport","food","beer"];

УВЕДОМЛЕНИЕ* В загруженном вами шаблоне переменная пива не используется.

УВЕДОМЛЕНИЕ* Загруженный вами шаблон содержит дополнительный переменный напиток.


Основная цель состоит в том, чтобы иметь возможность доступа к содержимому тела загруженного .docx в форме через клиентскую сторону. У меня есть код сравнения для обработки этой части, у меня просто проблемы с получением содержимого файла, чтобы было что сравнивать.


person Tanner Priest    schedule 22.09.2020    source источник


Ответы (1)


Если я правильно понимаю, вам нужен код для чтения содержимого файла docx в клиенте? Вот.

<html>
  <head>
    <meta charset="utf-8" />
    <title>title</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/docxtemplater/3.19.5/docxtemplater.js"></script>
    <script src="https://unpkg.com/[email protected]/dist/pizzip.js"></script>
  </head>
  <body>
    <input type="file"></input>
    <script>
      const input = document.querySelector("input[type=file]")
      input.addEventListener("change", () => {
        const reader = new FileReader();
        reader.onload = (e) => {
          const content = e.target.result;
          const zip = new PizZip(content);
          const doc = new docxtemplater().loadZip(zip)
          const text = doc.getFullText();
          alert(text);
        };
        reader.readAsBinaryString(input.files.item(0));
      });
    </script>
  </body>
</html>
person Alexander Smirnov    schedule 22.09.2020
comment
Это именно то, что я хотел! Я просматривал DocxTemplater и Pizzip, и я бы никогда через миллион лет не нашел эту комбинацию. Что мне нужно посмотреть, чтобы лучше понять это? Я буквально добрался до нового docxtemplater (zip), но это тот же файл, что и у меня. Еще раз спасибо! - person Tanner Priest; 23.09.2020
comment
Я тоже, пока не взглянул на stackoverflow.com/a/44719830/6871929 - person Alexander Smirnov; 23.09.2020