2014-10-13 2 views
0

У меня возникла проблема с печатью только gantt-диаграммы (или, например, таблицы) из моего веб-приложения.Как добавить тип css-типа динамически на страницу

У меня есть веб-приложение, имеющее диаграмму gantt, в которой мы делаем планирование. теперь мое требование - я просто хочу, чтобы график gannt печатался, когда я дал команду печати. Я попытался следующий код в моем странице стиля тега:

<style type="text/css"> 
 

 
@media print { 
 
    body * { 
 
    visibility: hidden; 
 
    } 
 
    #content-container , .divGcBody { 
 
    visibility: visible; 
 
    } 
 
} 
 
........}
<div class="divGcBody"> 
 
    <div class="divGcBodySection"> 
 
     <div class="divGcColumns"></div> 
 
     <!-- end of divGcColumns --> 
 
     <div class="divGcTimeline"> 
 
      <div class="divHCDispList"> 
 
       <div class="divTmlnRows divSlider"></div> 
 
      </div> 
 
      <!-- end of divHCDispList --> 
 
     </div> 
 
     <!-- end of divGcTimeline --> 
 
    </div> 
 
</div>

но как Гант получения генерируется динамически во время выполнения, и это решение не работает, и его дать мне только то, что определяет в. jsp-файл.

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

+0

Всех элементов, которые находятся внутри тела не может быть видны. –

ответ

1

Вы можете использовать эту функцию Javascript функции в сочетании с CSS (JS использует JQuery):

function printOnlyGantt() { 
      var actualWidth = $('#myGantt').width(); 
      $('body').prepend($('#myGantt')); 
      $('#myGantt').addClass("myScreenshot").css('width',actualWidth); 
      $('body>*').css('display', 'none').css('visibility','visible'); 
     } 
    }); 

CSS:

body { 
display: block !important; 
} 

.myScreenshot { 
position: absolute; 
left:0px; 
top: 0px; 
} 

body>*{ 
    visibility:hidden; 
} 

.myScreenshot:first-child{ 
    display: initial !important; 
} 

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

Этот код протестирован и работает довольно хорошо, даже если я использую его на сохраненных в локальных страницах

+0

это не сработало для меня .. вся моя страница была опущена .. я думаю, что это моя ошибка. Измените мой вопрос: дело в том, что я хотел напечатать div с полосой прокрутки (по горизонтали и по вертикали) и хочу печатать с помощью окна .print() даже те части, которые не отображаются или отображаются на странице (прокручиваемая часть). –

+0

моя функция должна работать из-за того, что копия и элемент (и его дети) находятся в верхней части страницы и спрятаны все остальные, поэтому вы сможете распечатать свою страницу. Конечно, виртуальное пространство страницы трудно управлять самостоятельно, но не путайте между тем, что должно быть вопросом программиста (чтобы изолировать и выбрать, что печатать), и тем, что является параметром печати браузера. Вот почему веб-сайт, такой как Groupon, использует PDF для визуализации виртуального пространства: сначала они выбирают элементы HTML dom, а затем переводят по всему PDF. И печать (на бумаге или в файле) pdf - это пользовательская задача. – MrPk

+0

BTW в вашем случае отправить отправить на принтер также виртуальное пространство вашей страницы непосредственно из js означает, что вы ограничиваете все элементы фактором, который позволяет всем элементам находиться в одном листе. ИМХО не твоя такс, но я не знаю, что ты должен понимать;) – MrPk