При экспорте в Word of Confluence содержимое теряет стили CSS

Привет, сообщество StackOverflow,

Я пытаюсь создать генератор документов в Confluence 6.10.2 (с JQuery 1.7.2) с различными вариантами для пользователя.

Пользователи могут установить флажки или переключатели, которые будут скрывать/отображать другие страницы, включенные через HTML.

После выбора документов/параметров пользователь может экспортировать их в Word.

Первая проблема заключается в том, что опция «Экспорт в Word», которая поставляется с Confluence, экспортирует все (включая генератор и все разделы, обычно скрытые в зависимости от выбора пользователя...).

Поэтому вместо этого я создаю всплывающее окно, включающее только выбранные пользователем элементы, а затем добавляю кнопку «Экспорт в Word», которая использует jquery.wordexport.js в качестве дополнительной библиотеки.

Вторая проблема заключается в том, что стиль CSS не передается (по-прежнему //TODO в этом js). Поскольку я использую CSS counter-reset/counter-increment, чтобы иметь правильные приращения заголовка, отсутствие переданного CSS нарушает это.

Я попытался вручную написать весь скрипт экспорта jquery.wordexport.js в свой HTML и жестко кодировать стиль CSS, но это тоже не работает.

<script src="https://www.jqueryscript.net/demo/Export-Html-To-Word-Document-With-Images-Using-jQuery-Word-Export-Plugin/FileSaver.js"></script>
<script src="https://www.jqueryscript.net/demo/Export-Html-To-Word-Document-With-Images-Using-jQuery-Word-Export-Plugin/jquery.wordexport.js"></script>

...
    // Open popup
    $("button#submit").click(function(){
        var htmlContent = $( "#schedMaster" ).html();
        $( "#schedulesDiv" ).html(htmlContent);
        $( "#schedulesDiv" ).find(".noprint").remove();
        //$( "#schedulesDiv table, #schedulesDiv td" ).css("border", "1px solid black");
        $( "#schedulePopup" ).show();
    });

    $("button#exportWord").click(function(event){
        $("#schedulesDiv").wordExport();
    });

});
</script>

<div id="schedulesOverlay" style="display: none;" tabindex="0" class="aui-blanket"></div>
<div style="margin-top: -265px; margin-left: -433px; width: 1065px; height: 530px; z-index: 3004; display: none;" id="schedulePopup" class="aui-popup aui-dialog">
    <h2 class="dialog-title">Schedules</h2>
    <div class="dialog-page-body">
        <div style="height: 413px; padding: 20px;" class="dialog-panel-body">
            <div id="schedulesDiv">...</div>
        </div>
        <div class="dialog-button-panel">
            <button id="exportWord">Export to Word</button> <button id="close">Close</button>
        </div>
    </div>
</div>

ПРИМЕЧАНИЕ. Если я удалю FileSaver.js и jquery.wordexport.js, кнопка «Экспорт в Word» по-прежнему создает файл... Не знаю, почему, но интересно, не включает ли реализация Atlassian JQuery аналогичную функцию?

Заранее спасибо за помощь.


person Jonas    schedule 09.07.2019    source источник


Ответы (1)


Оказывается, псевдоэлемент, такой как ::before, нельзя передать при экспорте в Word.

Поэтому вместо этого я переписываю заголовки с буквенными/цифровыми значениями, используя функцию в этом ответе: https://stackoverflow.com/a/5127570/11760815 перед экспортом в Word.

person Jonas    schedule 12.07.2019