Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите разобраться в чем проблема. (https://javascript.ru/forum/misc/86611-pomogite-razobratsya-v-chem-problema.html)

Aidec 18.09.2025 01:04

Помогите разобраться в чем проблема.
 
Мне нужно получить картинку в docx через HTML страничку.
Все вроде сделал правильно, но картинка не добавляется, в чем проблема не пойму.
Скину тестовый готовый вариант что бы вы могли сами посмотреть.
https://www.dropbox.com/scl/fi/carmee8af9epns36k8uy6/test.zip?rlkey=bc9mvft1cdflt53khr56hfo4i&st=4gnvyx pr&dl=0

Aidec 04.12.2025 09:44

Столько времени прошло и никто не смог помочь.

Aetae 04.12.2025 19:49

Всем лень качать какой-то архив с мутным описанием. Привёл бы тут код, может кто бы что и увидел, подсказал.

Aidec 05.12.2025 17:24

В этом архиве полный код с библиотеками
А этот код вполне правильный судя по описанию библиотек, но не работает. Поэтому я скинут тестовый проект что бы все максимально наглядней было
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Docxtemplater Image Browser Example</title>
    <script src="../build/imagemodule.js"></script>
    <script src="../build/pizzip.min.js"></script>
    <script src="../build/docxtemplater-latest.min.js"></script>
    <script src="../build/FileSaver.min.js"></script>
</head>
<body>
    <h2>Генерация DOCX с картинкой 120x180</h2>
    <input type="file" id="templateInput" accept=".docx">
    <input type="file" id="imageInput" accept="image/*">
    <button onclick="generateDocxWithImage()">Скачать docx с фото</button>
    <script>
    async function generateDocxWithImage() {
        const templateFile = document.getElementById('templateInput').files[0];
        const imageFile = document.getElementById('imageInput').files[0];
        if (!templateFile || !imageFile) {
            alert('Выберите шаблон и картинку!');
            return;
        }

        const templateReader = new FileReader();
        templateReader.readAsBinaryString(templateFile);
        templateReader.onload = function(evt) {
            const imageReader = new FileReader();
            imageReader.readAsDataURL(imageFile);
            imageReader.onloadend = function() {
                const photoBase64 = imageReader.result;
                const zip = new window.PizZip(evt.target.result);
                const imageModule = new window.ImageModule({
                    centered: true,
                    getImage: function(tagValue) {
                        return tagValue.split(',')[1];
                    },
                    getSize: function(img, tagValue, tagName) {
                        return [120, 180];
                    }
                });
                const doc = new window.Docxtemplater(zip, {
                    modules: [imageModule]
                });
                doc.render({ image: photoBase64 });
                const out = doc.getZip().generate({
                    type: 'blob',
                    mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
                });
                window.saveAs(out, 'output.docx');
            };
        };
    }
    </script>
</body>
</html>


Часовой пояс GMT +3, время: 16:04.