2017-01-31 4 views
1

Я пытаюсь экспортировать некоторые данные в файл PDF. Я использую:Django-easy-pdf, заголовок на каждой странице документа

  • Джанго 1.9.12
  • Джанго-легкий PDF 0.1.0
  • Python 2,7

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

На данный момент я могу только сделать его на первой странице. У меня нет такой проблемы с нижним колонтитулом, она правильно отображается на каждой странице.

Мой шаблон выглядит следующим образом:

{% extends "easy_pdf/base.html" %} 

{% block extra_style %} 
<style type="text/css"> 

    @page { 
     size: landscape; 
     margin-left: 1cm; 
     margin-right: 1cm; 
     margin-top: 1.5cm; 
     margin-bottom: 2cm; 

     @frame footer { 
      -pdf-frame-content: page-footer; 
      bottom: 0cm; 
      margin-left: 1cm; 
      margin-right: 1cm; 
      height: 2cm; 
     } 
    } 

</style> 
{% endblock %} 

{% block page_header %} 
    {% include "document_head.html" %} 
{% endblock %} 

{% block content %} 
    {% include "main_table.html" %} 
{% endblock %} 

{% block page_foot %} 
    {% include "document_foot.html" %} 
{% endblock %} 

Выполнение блоков без включают нет никакой разницы.

Я переписал некоторый базовый стиль от base.html согласно моим потребностям (нижний колонтитул).

Я не уверен, правильно ли я понимаю функциональность заголовка, но, на мой взгляд, он должен отображаться на каждой странице (подобно заголовкам MS Word), потому что заголовок не равен заголовку. Если мое недопонимание неверно, то должен быть другой способ визуализации заголовка на каждой странице.

Содержание моего PDF-файла является динамическим, и его длина не может быть предсказана.

Я прочитал documentation, и мне не удалось найти решение моей проблемы, и я не нашел здесь никакого решения.

Обратите внимание, что я визуализирую свой PDF в пейзаж ориентация.

Благодарим за помощь и предложения.

ответ

1

Обнаружено решение, и я отправлю его здесь, если кто-либо найдет его полезным.

Оказалось, что мне пришлось полностью переписать base.html и перейти от него. Так что мой new_base.html выглядит следующим образом:

<!DOCTYPE html> 
<html> 
<head> 

    {% block style_base %} 
     {% block layout_style %} 
      <style type="text/css"> 

      </style> 
     {%endblock%} 
     {% block extra_style %}{% endblock %} 
    {% endblock %} 

</head> 
<body> 

    <div id="page-header"> 
     {%block page_header%} 
     {%endblock%} 
    </div> 

    <div> 
     {%block content%} 
     {%endblock%} 
    </div> 

    <div id="page-footer"> 
     {%block page_foot%} 
     {%endblock%} 
    </div> 
</body> 

И в моем шаблоне, который проходит new_base.html я добавил следующие строки:

@frame header { 
    -pdf-frame-content: page-header; 
    top: 0cm; 
    margin-top: 0.5cm; 
    margin-bottom: 0.5cm; 
    margin-left: 1cm; 
    margin-right: 1cm; 
    height: 5cm; 
} 

Теперь это выход дает заголовок страницы на каждом страницы документа.

0

У меня была такая же проблема в последнее время, и ответ от пользователя @ user3745794 мне очень помог.

Мои шаблоны отличаются немного, но здесь они на случай, если это поможет кому-то с той же проблемой.

шаблоны/easy_pdf/base.HTML

<!DOCTYPE html> 
<html> 
    <head> 
     <title>{% block page_title %}{% endblock %}</title> 

     {% block style_base %} 
      {% block layout_style %} 
       <style type="text/css"> 
        @page { 
         size: {{ pagesize|default:"A4" }}; 
         margin-left: 1cm; 
         margin-right: 1cm; 

         @frame header { 
          -pdf-frame-content: page-header; 
          margin-top: 1.0cm; 
          margin-left: 1cm; 
          margin-right: 0.5cm; 
          margin-bottom: 0.5cm; 
          height: 3cm; 
         } 

         @frame content { 
          top: 0.5cm; 
          margin-top: 3.5cm; 
          margin-bottom: 0.5cm; 
          margin-left: 1.75cm; 
          margin-right: 1.5cm; 
         } 

         @frame footer { 
          -pdf-frame-content: page-footer; 
          bottom: 0cm; 
          margin-left: 1cm; 
          margin-right: 1.5cm; 
          height: 2cm; 
         } 
        } 
       </style> 
      {%endblock%} 
      {% block extra_style %}{% endblock %} 
     {% endblock %} 

    </head> 

    <body> 
     <div id="page-header"> 
      {%block page_header%} 
      {%endblock%} 
     </div> 

     <div id="page-content"> 
      {%block page_content%} 
      {%endblock%} 
     </div> 

     <div id="page-footer"> 
      {%block page_foot%} 
      {%endblock%} 
     </div> 

    </body> 
</html> 

И в моих шаблонах шаблон /report.html

{% extends "easy_pdf/base.html" %} 

{% load static %} 

{% block page_title %} 
    {# Page title here #} 
{% endblock %} 

{% block extra_style %} 
    <style type="text/css"> 
     {# Extra CSS styles here #} 
    </style> 
{% endblock %} 

{% block page_header %} 
    {% include "header.html" %} 
{% endblock %} 

{% block page_content %} 

    {# Page 1 #} 

    <pdf:nextpage /> 

    {# Page 2 #} 

    <pdf:nextpage /> 

    {# Page 3 #} 

{% endblock %} 

{% block page_foot %} 
    {% include "footer.html" %} 
{% endblock %} 

шаблоны/header.html

<h1>Hello World!!!</h1> 

шаблоны/footer.html

<h1>Goodbye World!!!</h1> 

Надеюсь, что это поможет;).

Смежные вопросы