Распечатать график расписания Fullcalendar Scheduler

Просмотр временной шкалы Scheduler Fullcalendar ДЕЙСТВИТЕЛЬНО не поддерживает печать, но, к сожалению, моему клиенту это необходимо. Проблема в том, что в печати обрезается вторая половина календаря.

Возможные решения: zoom: 0.8 отлично работает в Chrome, и отображаются все дни недели. Однако это ничего не делает для Firefox. transform: scale(0.8), похоже, не имеет такого же эффекта, поскольку часть календаря все еще отключена, хотя все уменьшено. Если я имитирую css в Chrome, он отображается даже при включенном масштабе преобразования, однако не отображается при фактической печати.

Извините, пожалуйста, за картофельный стиль календаря, когда он распечатывается. Меня больше беспокоит пятница, когда отключается вторая половина календаря. В Chrome переключите мой комментарий на масштабирование и переключитесь на масштаб, чтобы увидеть разницу.

Вот ссылка на кодовый код https://codepen.io/bedelman851/pen/wXeZEO


person Brian Edelman    schedule 13.06.2018    source источник
comment
Вы пробовали объединить его с готовым CSS для печати fullcalendar? Вы можете добавить <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.print.min.css" media="print" /> на свою страницу. Возможно, это поможет. Но на самом деле веб-страницы в целом не предназначены для печати - они не ограничены размером листов бумаги. Ваш клиент всегда может печатать на бумаге большего размера, если может ... Я полагаю, вы уже используете альбомную ориентацию? А как насчет уменьшения глобального размера шрифта? Просто некоторые идеи из моей головы.   -  person ADyson    schedule 14.06.2018
comment
@ADyson: Да, я тоже включил это в код. Я мог бы испортить размер шрифта, хотя он и так довольно мал. Возможно, им просто придется использовать только хром (в идеальном мире) для печати этого календаря. Это внутренний продукт, так что шанс на это есть. Я чувствовал себя таким css-нубом, работающим над печатью этого представления. Вверху вниз, а влево - вправо.   -  person Brian Edelman    schedule 14.06.2018
comment
@BrianEdelman Вы пробовали css .fc-scroller {margin: 0px! Important; } предложено @ github.com/fullcalendar/fullcalendar-scheduler/issues/185   -  person Malik    schedule 19.06.2018
comment
Это решило проблему временной шкалы в IE, но я не могу распечатать ее полностью. Временная шкала обрезана в 21:00   -  person Malik    schedule 19.06.2018
comment
Было ли когда-нибудь решение этой проблемы? В данный момент работаю над этим сам ...   -  person Miska Rantala    schedule 18.03.2020
comment
@MiskaRantala Нет, к сожалению. Я вытащил дерьмо из CSS, чтобы его напечатать, но я не могу вспомнить, насколько я был успешным. Взгляните на этот пакет html2canvas.hertzen.com, поскольку я помню, что это действительно полезное потенциальное решение. Но у меня это не установлено в проекте, поэтому я думаю, что просто использовал css. Оставляю ответ на этот вопрос со всеми моими css для потомков.   -  person Brian Edelman    schedule 21.03.2020


Ответы (1)


Я какое-то время не участвовал в этом проекте, и я не думаю, что решил это удовлетворительно, но я решил, что он «достаточно хорош» для моей ситуации. Я рассмотрел множество вариантов и потратил на это слишком много времени.

CSS, с которым я закончил, находится ниже. Я не могу поручиться за то, как он выглядит или что вам нужно, но если это поможет, я рад!

 //CALENDAR CSS
  .calendar-functions,
  .calendar-functions div:last-child,
  .calendar-functions a,
  .calendar-view h1,
  .fc-right,
  .fc-right button,
  .fc-license-message,
  .print-button,
  .print-button-week {
    display: none;
  }


  .month-view .calendar-functions div,
  .week-view .calendar-functions div {
    display: none;
  }

  .fc-event:after {
    content: attr(data-coll) !important;
  }

  .fc-body {
    height: 400px !important;
  }

  .calendar-widget-week,
  .fc-timeline {
    width: 100%;
  }

  body {
    width: 100%;
  }

  .fc-view-container {
    // transform: scale(0.8);
    zoom: 0.8;
  }

  .fc-timeline {

    th {
      height: 30px;
    }

    .fc-scroller-canvas {
      min-width: 100% !important;
      width: 100% !important;
    }
  }


  .calendar-day tr td:first-child {
    a[href]:after {
      display: none;
    }
  }

  .fc {
    max-width: 100% !important;

    th {
      height: 30px;
    }
  }

  .fc-event {
    background: transparent !important;
    color: #000 !important;
    page-break-inside: avoid;
  }

  .fc-event .fc-resizer {
    display: none;
  }

  .fc th,
  .fc td,
  .fc hr,
  .fc thead,
  .fc tbody,
  .fc-row {
    border-color: #ccc !important;
  }

  .fc-bgevent-skeleton,
  .fc-highlight-skeleton,
  .fc-helper-skeleton,
  .fc-business-container,
  .fc-highlight-container,
  .fc-helper-container {
    display: none;
  }

  .fc-ltr .fc-timeline-event {
    margin-right: 5px;
  }

  .calendar-widget-week .fc-timeline-event {
    padding-bottom: 97px;
  }

  /* don't force a min-height on rows (for DayGrid) */
  .fc tbody .fc-row {
    height: auto !important;
    /* undo height that JS set in distributeHeight */
    min-height: 0 !important;
/* undo the min-height from each view's specific stylesheet */ }

  .fc tbody .fc-row .fc-content-skeleton {
    position: static;
    /* undo .fc-rigid */
    padding-bottom: 0 !important;
/* use a more border-friendly method for this... */ }

  .fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td {
    /* only works in newer browsers */
    padding-bottom: 1em;
/* ...gives space within the skeleton. also ensures min height in a way */ }

  .fc tbody .fc-row .fc-content-skeleton table {
    /* provides a min-height for the row, but only effective for IE, which exaggerates this value,
     making it look more like 3em. for other browers, it will already be this tall */
    height: 1em; }

  //List views
  .pagination-right,
  .pagination-left *,
  .pagination-right *,
  .pagination-left {
    display: none;
  }

  .fc-day-grid-event,
  .fc-timeline-event {
    &:before {
      content: attr(data-id);

    }
    &:after {
      content: "";
    }

    &:before,
    &:after {
      display: inline-block !important;
    }
  }

  .fc-scroller {
    overflow: visible !important;

    .fc-scroller-canvas {
      min-width: none !important;
    }
  }

  @page :left {
    margin-left: 0;
  }

  @page :right {
    margin-left: 0;
  }

  /* for vertical events */
  .fc-event-bg {
    display: none !important;
  }

  .fc-event .ui-resizable-handle {
    display: none !important;
  }

  .print-window__exit {
    display: none;
  }

  #calendar-week {
    display: none;
  }

  .dt-print-view {
    #calendar-week {
      display: block;
    }
  }

  .print-table,
  .print-title {
    display: block !important;
  }
person Brian Edelman    schedule 20.03.2020