Удаление границы таблицы внутри tfoot и thead

Я хочу удалить border внутри области tfoot и thead при печати. Когда строка таблицы была разбита на новую страницу, граница продолжает отображаться даже внутри области tfoot, а также области thead. Это скриншот проблемы:

Удаление границы таблицы внутри tfoot и thead

Мой код:

@media print {
  .report-container {
    page-break-after: always;
  }
  thead.report-header {
    display: table-header-group;
  }
  tfoot.report-footer {
    display: table-footer-group;
    border: none;
  }
  #spacer {
    height: 230px;
  }
  #footer {
    position: fixed;
    bottom: 0;
    border: none;
  }
}
<table class = "report-container" width = "100%" style = "" cellspacing = "1" cellpadding = "5">
  <thead class = "report-header">
    <tr>
      <td width = "" align = "left">
        <?php if ($so_invoice_report_row['has_header_footer']) { echo html_entity_decode($rowHeaderFooter['header_content']); } else {} ?>
      </td>
    </tr>
  </thead>
  <tfoot class = "report-footer">
    <tr>
      <td width = "" align = "left" id = "spacer"></td>
    </tr>
  </tfoot>
  <tbody>
    <tr>
      <td>
        <?php
          //include 'table_content.php';
        ?>
        <table border=1 style = "border-collapse: collapse;">
        <?php
        for($i=0; $i<=100;$i++) {
	        echo '<tr><td>';
	        echo "Column " . $i . '</td><td> Column2 ';
	        echo '</td></tr>';
        }
        ?>
        </table>
      </td>
    </tr>
  </tbody>
</table>
<div id = "footer">
  <?php if ($so_invoice_report_row['has_header_footer']) { echo html_entity_decode($rowHeaderFooter['footer_content']); } else {} ?>
</div>
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
1 382
2

Ответы 2

В таблице стилей CSS удален position: fixed; bottom: 0; из #footer, как показано ниже, и применено значение высоты для нижнего колонтитула.

@media print {
  .report-container {
    page-break-after: always;
  }
  thead.report-header {
    display: table-header-group;
    background-color:red;
  }
  tfoot.report-footer {
    display: table-footer-group;
    border: none;
    background-color:green;
  }
  tbody {
    background-color:blue;
  }
  #spacer {
    margin-bottom: 150px;
  }
  #footer {
    border: none;
  }
} 




<table class = "report-container" width = "100%" style = "" cellspacing = "1" cellpadding = "5">
  <thead class = "report-header">
    <tr>
      <th width = "" align = "left">
        <?php if ($so_invoice_report_row['has_header_footer']) { echo html_entity_decode($rowHeaderFooter['header_content']); } else {} ?>
      </th>
    </tr>
  </thead>
  <tfoot class = "report-footer" id = "spacer">
    <tr>
      <td><?php if ($so_invoice_report_row['has_header_footer']) { echo html_entity_decode($rowHeaderFooter['footer_content']); } else {} ?>
      </td>
    </tr>
  </tfoot>
  <tbody>
    <tr>
      <td><?php
          include 'table_content.php';
        ?>
      </td>
    </tr>
  </tbody>
</table>

Это сработает для вас. Попытайся. Сообщите мне, если возникнут какие-либо проблемы.

Попытка выполнить согласно предложенному, но нижний колонтитул div теперь не повторяется на каждой странице. Он отображается только поверх третьей страницы (это последняя страница, таблица только до страницы 2)

Mike 31.07.2018 06:36

Раньше я не замечал. ваш формат HTML-кода неверен. почему бы вам не поместить <div id = "footer"> в свой <tfoot>?

VSM 31.07.2018 07:14

Я обновил свой ответ. Используйте этот HTML-код и дайте мне знать, каков ваш результат. Немного сложно решить эту проблему, не видя кода.

VSM 31.07.2018 07:20

При удалении position: fixed; bottom: 0; нижний колонтитул последней страницы помещается прямо под последним элементом tbody. Вот почему я добавил div с идентификатором нижнего колонтитула. Проверено с использованием вашего последнего кода, но граница все еще видна в области tfoot и thead. Кстати, я использую Chrome, чтобы проверить это.

Mike 31.07.2018 08:06

Тем не менее, я гость, мне нужно заглянуть в файл table_content.php, если он является причиной проблемы. Поскольку в настоящее время внутри него много вложенных таблиц (файл был давно создан кем-то другим, поэтому я действительно не знаю форматирования)

Mike 31.07.2018 09:31

Я заменил include_content.php тестовым циклом for, описанным выше. Не могли бы вы попробовать его на своем местном рынке и посмотреть, не столкнетесь ли вы с той же проблемой, что и моя? Поскольку я не мог решить эту проблему даже при использовании вашего обновленного кода. Спасибо

Mike 13.08.2018 05:48

Я не могу воспроизвести ваш результат ... Не могли бы вы опубликовать немного сгенерированного html, который показывает проблему (я имею в виду, фактически содержащий данные таблицы вместо -stuff).

НО, если я вас правильно понял, вы пытаетесь освободить отмеченное пространство для корпоративного верхнего и нижнего колонтитула, уже содержащихся на бумаге, которую вы используете. В этом случае у меня есть обходной путь для вас

  1. Добавьте белые (что означает: background: white;) divs желаемого размера с фиксированной позицией и более высоким z-индексом вверху и внизу вашей html-страницы, содержащей ваши дополнительные данные заголовка *

  2. Добавьте пустые блоки div с относительным позиционированием и размером вашего верхнего / нижнего колонтитула до и после содержимого вашей html-страницы, чтобы весь контент не «уходил под» другие элементы верхнего / нижнего колонтитула (я думал, что использование заполнения также должно работать, но здесь это не сделал)

  3. Оставьте thead и tfooter пустыми - просто измените его размер, чтобы он не попадал под другие элементы верхнего / нижнего колонтитула.

Попробуй это.

*) Примечание: очевидно (по крайней мере, в Opera 54.0) белый цвет фона никогда не игнорируется, но если ваш верхний / нижний колонтитул при печати кажется прозрачным, а не белым, поищите параметр «печатать фоновые изображения»

У меня есть требование добавить верхний и нижний колонтитулы в текущие шаблоны (отсюда и использование include 'table_content.php';). Итак, я использую теги thead и tfoot для достижения этой цели, но проблема в том, что данные не помещаются на 1 страницу ... горизонтальная граница видна в области tfoot и thead (область, которую я выделил красным).

Mike 31.07.2018 10:59

У вас есть какой-нибудь пример кода для решения этой проблемы? В моей области верхнего и нижнего колонтитула все еще есть граница таблицы.

Mike 13.08.2018 05:51

Конечно. Или, может быть, на самом деле. Не могли бы вы опубликовать фрагмент html, в котором теги <php> заменены фактическим содержанием? Затем я проверю, смогу ли я заставить предложенный обходной путь работать.

Holzchopf 14.08.2018 07:15

Другие вопросы по теме