2016-12-21 5 views
1

Я пытаюсь решить эту текущую проблему, с которой я мог бы воспользоваться некоторой помощью: Из базы данных с использованием php страница должна загрузить X-номер разделы, каждая секция имеет некоторый контент сверху, таблицу и некоторый контент внизу, таблица может иметь 0 для любого количества строк, в зависимости от того, что было ранее в базе данных. . Помимо таблицы, остальная часть контента не отличается по размеру.Динамически добавлять разрывы страниц в html с переменным количеством разделов переменных размеров

Я не могу заранее знать, какой размер будет иметь размер каждой секции из-за стола, и обычно имеется не менее 30 секций.

Эта страница должна быть чистым для печати, и помимо перерывов все уже работает.

Мне нужно найти способ динамически добавлять разрывы страниц, чтобы они соответствовали разделам на странице, не сокращая их между страницами.

Код составляет около 400 строк, так что не было бы практично разместить его здесь, но раздел структура что-то вроде этого:

<section class="row"> 
 
<section> 
 
\t <section class="col-md-2"></section> 
 
\t <section class="col-md-8 printcenter"> 
 
\t \t <p class="docenteheader" > 
 
\t \t \t <span class="tabspaceright">NAME: <strong>name</strong></span> 
 
\t \t \t <span class="tabspaceleft">ID: <strong>number</strong></span> 
 
\t \t </p> 
 
\t \t <table> 
 
\t \t   <tr> 
 
\t \t     <th><strong>1:</strong></th> 
 
\t \t \t <th><strong>2:</strong></th> 
 
\t \t \t <th><strong>3:</strong></th> 
 
\t \t \t <th><strong>4:</strong></th> 
 
\t \t   </tr> 
 
\t \t <tr> 
 
\t \t \t <td>1</td> 
 
\t \t \t <td>2</td> 
 
\t \t \t <td>3</td> 
 
\t \t \t <td>4</td> 
 
\t \t </tr> 
 
\t \t </table> 
 
\t \t <p><strong>Something1:</strong> Something</p> 
 
\t \t <p> 
 
\t \t \t <span><strong>Something2: number</strong></span> 
 
\t \t \t <span ><strong>Something3: number</strong></span> 
 
\t \t </p> 
 
\t \t <section class="rel_endline"></section> 
 
\t </section> 
 
\t <section class="col-md-2"></section> 
 
</section>      
 
</section>

Я удалил классы CSS и исходные имена и PHP-код для облегчения просмотра

+0

Это, вероятно, будет обрабатываться либо PHP, либо JS-кодом, поэтому, пожалуйста, укажите ваш PHP-код. Что бы вы сделали в своем PHP, ... вы, вероятно, выводите разделы в цикле 'for' или' while' вправо? Таким образом, вы просто отслеживаете, сколько раз вы зацикливаете, и добавляете разрывы страниц каждый раз, когда '$ i% 2 == 0', если вы хотите, чтобы страница прерывалась каждый другой цикл. Имеет ли это смысл? –

+0

Да, это действительно имеет смысл, спасибо за ответ, но это не помогает, так как иногда мне придется разбивать страницы после 1 цикла, иногда после 5 или 3 или на любое число, потому что размер разделов изменяется ... –

+0

Где я могу поместить PHP-код? его довольно огромный –

ответ

1

Вот пример кода PHP, сообщите мне, если что-то неясно. Я пытался использовать самоочевидные имена переменных.

<?php 

    $PAGEBREAK_LENGTH = 1000; // Add a page break every 1000 characters. 
    $lengthTracker = ''; 

    while ($row = odbc_fetch_array($res)){ 
     $lengthTracker .= $row['article']; 
     $lengthSize = strlen($lengthTracker); 

     if ($lengthSize > $PAGEBREAK_LENGTH) { 
      echo '<div class="page-break">This is a page break</div>'; 
      $lengthTracker = ''; // Reset length tracker since we just added a break 
     } 

     echo '<div class="article">'; 
     echo $row['article']; 
     echo '</div>'; 
    } 

?> 

Если включить if ($lengthSize > $PAGEBREAK_LENGTH) перед тем вторя статью, вы, как правило, включают в себя страницы-брейки «чаще.» Если вы включите оператор if после того, как статья будет echod, у вас будут разрывы страниц реже (так что у вас будут потенциально большие блоки текста).

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

+0

Спасибо за ответ HC_ –

+0

Я получил его для работы на firefox, но хром съедает все мои разделы пополам, хотя каждый дом на всем сайте плавает: нет и позиция: относительная и все разделы, установленные на страницу -break-inside: avoid –

+0

@RicardoMelo Мне нужно было увидеть пастебин, чтобы иметь возможность помочь с этим. Похоже, у вас могут быть заданные высоты или что-то еще. –

0

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

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