Docx.js не распознает базовые функции в html javascript

#docx #html-to-docx

#docx #html-to-docx

Вопрос:

Я пытаюсь экспортировать веб-приложение в MS Word с помощью Docx.js в браузере, но основные функции, такие как таблица или медиа, не распознаются браузером. Кто-нибудь сталкивался с этой проблемой, и если да, то что можно исправить ?.

Я получаю следующее сообщение об ошибке в консоли: «Неперехваченная ошибка ссылки: таблица не определена»

Ниже приведен мой пример кода:

 <html>
  
 <h1>DOCX browser Word document generation</h1>

<button type="button" onclick="generate()">Click to generate document</button>

<script>
    function generate() {
        const doc = new docx.Document();
        
        const table = new Table({
            rows: [
                new TableRow({
                    children: [
                        new TableCell({
                            children: [new Paragraph("Hello")],
                        }),
                        new TableCell({
                            children: [new Paragraph("World!!!")],
                        }),
                    ],
                }),
                new TableRow({
                    children: [
                        new TableCell({
                            children: [new Paragraph("bla bla bla")],
                        }),
                        new TableCell({
                            children: [new Paragraph("bla bla bla")],
                        }),
                    ],
                }),
            ],
        });

        doc.addSection({
            properties: {},
            children: [table],
        });

        docx.Packer.toBlob(doc).then(blob => {
            console.log(blob);
            saveAs(blob, "example.docx");
            console.log("Document created successfully");
        });
    }
</script>
  

Ответ №1:

У меня была аналогичная проблема в node. Я получал ReferenceError: HeadingLevel is not defined . Исследуя это, я обнаружил, что эта проблема открыта в github https://github.com/dolanmiu/docx/issues/485 . Поэтому я думаю, что вам нужно явно вызвать docx перед любым из объявлений docx. Например.

             rows: [
                new docx.TableRow({
                    children: [
                        new docx.TableCell({
                            children: [new docx.Paragraph("Hello")],
                        }),
                        new docx.TableCell({
                            children: [new docx.Paragraph("World!!!")],
                        }),
                    ],
                }),
                new docx.TableRow({
                    children: [
                        new docx.TableCell({
                            children: [new docx.Paragraph("bla bla bla")],
                        }),
                        new docx.TableCell({
                            children: [new docx.Paragraph("bla bla bla")],
                        }),
                    ],
                }),
            ],
        });
  

Комментарии:

1. Да, вы правы. На самом деле я решил это днем позже. Создатель Docx фактически ответил на вопрос, который я отправил в GitHub. Я просто забыл пометить это как разрешенное. Спасибо за подтверждение!