Django pdf: макет страницы с длинными текстами, используя Пизу - PullRequest
4 голосов
/ 20 сентября 2011

Я использую pisa для генерации некоторых PDF-файлов следующего макета:

  @page {
        size: a4;
        @frame header {
          top: 5.4cm;
          bottom: 4cm;
          left: 1.2cm;
          right: 1.2cm;
        }
        @frame main {
          top: 10.5cm;
          bottom: 4cm;
          left: 1.2cm;
          right: 1.2cm;
        }
        @frame footer {
          top: 26cm;
          left: 1.2cm;
          right: 1.2cm;
        }
      }

Иногда содержимое основного фрейма недостаточно короткое, чтобы поместиться на одной странице, и поэтому оно использует пространстворамка нижнего колонтитула, а также.Вместо этого я хотел бы, чтобы оставшаяся часть текста находилась в главном пространстве кадра второй страницы (и оставляла свободное пространство остальных кадров).Есть предложения?

1 Ответ

10 голосов
/ 21 сентября 2011

Пизу не особо легко понять.Я использую его для создания нескольких различных форматов отчетов.

Я не помещаю основное содержание в рамку.Также все это в дюймах / буквенном размере, но я хочу дать вам точную информацию о том, как моя настроена, и работает для нескольких страниц.

Ваша проблема может быть исправлена ​​добавлением поля к @page или <keepinframe></keepinframe>теги.

<document pagesize='letter'>
<head>
    <title>{{ title }}</title>
    <style type="text/css">
        @page {
            size: letter portrait;
            margin: 1.0in 0.25in 0.5in 0.25in;
            padding: 0;

            @frame header {
                -pdf-frame-content: headerContent;
                width: 8in;
                top: 0.5in;
                margin-left: 0.5in;
                margin-right: 0.5in;
                height: 1.0in;
            }
            @frame footer {
                -pdf-frame-content: footerContent;
                width: 8in;
                bottom: 0in;
                margin-left: 2cm;
                margin-right: 2cm;
                height: 1cm;
            }
        } <!-- end of @page bracket -->

        <!-- add content styles here -->
        h1 { text-align: middle; font-size: 18px; }
    </style>
</head>
<body>
<div id='headerContent'>
    <!-- header content -->
</div>
<div>
    <keepinframe>
     <!-- Content -->
    </keepinframe>
</div>
<div id='footerContent'>
    <!-- footer content -->
    <pdf:pagenumber>
</div>
</body>
</document>
...