Летающая тарелка - вторая страница не имеет высоты от заголовка - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь создать из HTML PDF в Flying Saucer. В конце я хотел бы получить что-то вроде счета.

Я также использую JSF / Primefaces для генерации HTML кода. Моя функция generateHtmlCodeController генерирует простой HTML код.

Может быть, немного больше фона: у меня есть дизайнер, который генерирует мой шаблон. Все настройки шаблона хранятся в файле XML. Во время рендеринга файл XML будет загружен и генерируется на основе этого кода HTML (generateHtmlCodeController). Все это уже реализовано и работает.

Основная проблема связана с летающими тарелками и перекрывающимися таблицами.

Вот мой текущий код JSF:

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:ui="http://java.sun.com/jsf/facelets">

<h:head>
    <h:outputStylesheet>

     @page{
        size: A4 portrait;

         @top-center { 
            content: element(header) 
         }
         @bottom-center { 
            content: element(footer) 
         }

      }

        div.header {
            display: block; text-align: center; 
            position: running(header);
        }
        div.footer {
            display: block; text-align: center;
            position: running(footer);
        }

      table {
        -fs-table-paginate: paginate;
        -fs-page-sequence: auto;
        border-spacing: 0;
        page-break-after:auto;
      }

      thead {
        display: table-header-group;
      }
      tfoot {
        display: table-header-group;
      }


    </h:outputStylesheet>
    <title>Vorschau</title>
</h:head>

<h:body class="main">

    <section> <ui:repeat
        value="#{previewDocumentDesignerController.editablePageList}"
        var="templatePage" varStatus="templatePageStatus">


         <div class="header">
            <ui:repeat value="#{templatePage.editableElementHeaderList}"
            var="editableElement" varStatus="status">

                <div style="position: absolute; top: #{editableElement.top/100 * 21}cm; left: #{editableElement.left/100 * 21}cm;width: #{editableElement.width/100 * 21}cm;height: #{editableElement.height/100 * 29.7 - 0.2}cm;">
                    <h:outputText
                        value="#{generateHtmlCodeController.generateHtmlCode(editableElement)}"
                        escape="false" />
                </div>

            </ui:repeat>
        </div>



         <div class="content">
            <ui:repeat value="#{templatePage.editableElementContentList}"
                var="editableElement" varStatus="status">

                <div style="position: absolute; top: #{editableElement.top/100 * 21}cm; left: #{editableElement.left/100 * 21}cm;width: #{editableElement.width/100 * 21}cm;height: #{editableElement.height/100 * 29.7 - 0.2}cm;">
                    <h:outputText
                        value="#{generateHtmlCodeController.generateHtmlCode(editableElement)}"
                        escape="false" />
                </div>

            </ui:repeat>
        </div>



         <div class="footer">
            <ui:repeat value="#{templatePage.editableElementFooterList}"
                var="editableElement" varStatus="status">

                <div style="position: absolute; top: #{editableElement.top/100 * 21}cm; left: #{editableElement.left/100 * 21}cm;width: #{editableElement.width/100 * 21}cm;height: #{editableElement.height/100 * 29.7 - 0.2}cm;">
                 <h:outputText
                    value="#{generateHtmlCodeController.generateHtmlCode(editableElement)}"
                    escape="false" /> 
                </div>

            </ui:repeat>
        </div>


    </ui:repeat> 
</section>
</h:body>
</html>

Вот вывод с моей первой страницы:

enter image description here

Пожалуйста, смотрите здесь вторую страницу (с вопросом)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...