Как распечатать фоновые изображения в FF или IE?

Есть ли способ установить ff и т.е. распечатать фоновые изображения?

Я использую звёздный образ, чтобы классифицировать некоторые навыки, и я задал его как фоновое изображение и позиционировал либо установить один старт, два, три и т.д. Когда я пытаюсь распечатать страницу, изображения исчезают.

Итак, есть ли способ сделать их отображаемыми, когда я печатаю страницу или, по крайней мере, способ заменить изображения * или что-то, что будет видно?

Ответ 1

Рассматривали ли вы использование таблицы стилей печати? Это может позволить вам сделать что-то вроде:

<div class="star">*</div>

/* media:screen */
.star {
    background: ...;
    overflow: hidden;
    text-indent: 9999em;
}

/* media:print */
.star {
    text-indent: 0;
}

или даже проще:

<div class="star"><img src="./images/star.jpg" alt="*" /></div>

/* media:screen */
.star img {
    visibility: hidden;
}

/* media:print */
.star img {
    visibility: visible;
}

Вы можете указать таблицы стилей, которые браузеры должны использовать, поставляя медиатеку либо с помощью css, либо с помощью элемента ссылки:

<link rel="stylesheet" type="text/css" href="main.css" media="screen" />
<link rel="print stylesheet" type="text/css" href="print.css" media="print" />

Ответ 2

В Firefox перейдите в File = > Page Setup. Существует флажок "Печать фона (цвета и изображения)". Просто проверьте это, и все должно быть установлено.

Ответ 3

В вашем файле print.css измените фоновое изображение на элемент списка.

Итак:

.background {
  display: list-item;
  list-style-image: url(yourbackgroundimage.gif);
  list-style-position: inside;
}

Этот метод описан более подробно: http://www.web-graphics.com/mtarchive/001703.php

Ответ 4

На самом деле я нашел ответ довольно простым.

Ситуация: у меня был тег div с фоновым изображением. Что не будет распечатываться при печати.

Решение:

  • Создайте еще одну таблицу стилей под названием "print.css"

  • Добавьте следующую строку кода ко всем своим веб-страницам сразу после ссылки на оригинальную ссылку css:

    <link rel="stylesheet" type="text/css" media="print" href="css/print_styles.css" />
    
  • Сразу же после вашего оригинального заголовка без печати добавьте следующее:

    <div id="header"></div> <!-- YOUR NON PRINTING HEADER -->
    
    <div id="printheader"><img src="images/header_image.jpg" width="940" height="100" alt="header" /></div>
    
  • В вашем файле style.css, который является основным стилем CSS для вашего сайта, добавьте следующую строку:

    #printheader {display: none; } /* Makes the print header not visible */
    
  • В вашем файле print.css добавьте следующий код:

    #footer, #nav, #sidenav, .print, .search, .breadcrumb, .noprint {display: none;} /* Items from your page you DO NOT want to print */
    
    #container, #container2, #contentwide, #contentwide_tpsub, #contentwide_tp, #contentwide_open {width: 100%; margin: 0; float: none;} /* Clear widths to ensure all text is printed */
    
    #printheader {display: block; } /* Turns ON the div when printing */
    

То, что вы делаете, по существу отключает заголовок на обычной странице "экран" и включает головку печати, когда вы выполняете вызов печати.

** Обратите внимание: вам нужно будет изменить файл print.css, чтобы включить другие элементы вашего файла style.css, чтобы отформатировать шрифты, цвета и т.д. Играйте с "Предварительный просмотр" и добавьте элементы, которые вы нужно, пока вы не получите распечатку, которую вы искали.

Ответ 5

Для IE http://support.microsoft.com/kb/980077

Для FF должно быть что-то подобное.

p.s. вы не можете установить это для клиентов!

p.s.2. вы можете заменить эти звезды изображениями переднего плана (абсолютными, если необходимо) в css (media = "print" ).

Ответ 6

Не используйте background-image для отображения печатаемых изображений, используйте вместо этого обычный тег <img>.

background-image предназначен для неважных изображений, которые большинство современных браузеров имеют тенденцию пропускать во время печати (настройка по умолчанию в IE 11, Chrome 35, FF 30).

Зачем вам не использовать тег img?

  • Проблемы с выравниванием. Используйте абсолютное позиционирование для решения проблем выравнивания.

  • Sprite - Sprite возможно с помощью простых тегов img и div.

  • Сделать более трудным для пользователя сохранение изображения - это также возможно с помощью простых img и div.

  • Чтобы "сохранить мой HTML чистый" - какое-либо из обходных решений действительно делает его более чистым для вас? Бросьте это:)

Ответ 7

У меня была такая же проблема с тем, что IE не поддерживал печать фона.

Итак, я создал 2 divs, один div имел более высокий Z и имел текстовое содержимое. Второй div был сразу за фронтом div, но с более низким индексом Z и имел изображение (img не фоновое изображение) для ширины и высоты 100%. Поэтому, когда я показал 2 divs вместе, он выглядел как один div, потому что они отлично перекрывались. Когда я печатаю в браузере IE, он отображается с изображением, потому что изображение не является фоновым изображением, а обычным тегом img, который заполняет нижний div.

некоторый код.

<div id="survey" class="surveyResponseWindow" style="display:none;">Please logout and re-login, because your session has expired.</div>
<div id="surveyBackground" class="surveyBackgroundDiv" style="display:none;">
<!-- provides the background image for ie browser so that it does not show the lower level divs. -->
<img src="/rsm/jsp/public/images/contentGrad.gif" width="100%" height="100%" />
</div>

<script language="javascript" type="text/javascript">  
function showSurvey(surveyResponseId) {
    var e = document.getElementById("survey");
    var bkgd = document.getElementById("surveyBackground");
    var focusinput = document.getElementById('focusinput');
    var nh = 'data-nohide';

    if (e.style.display=='none') {
        e.style.display='block';//show div
        bkgd.style.display='block';//show div
    }
    focusinput.focus();//set focus so we know when they click outside

    e.onclick = function(e) {
        this.style.display='none';//hide div if they click on it
        bkgd.style.display='none';//show div
    };
    //if the user press ESC
    focusinput.onkeyup = function(e){
        if(e.keyCode === 27){
            var survey = document.getElementById("survey");
            var bkgd = document.getElementById("surveyBackground");
            //hide the div
            survey.style.display = 'none';
            bkgd.style.display = 'none';
            this.removeAttribute(nh);
        }else{
            //do something else with other keys(ie:down, up, enter)...
            focusinput.focus();
        }
    };
    //click somewhere else input onblur
    // was taken out because the browser print function would close the survey div page.
    //focusinput.onblur = function(){
    //    if(!e.getAttribute(nh)){
    //      //hide the div
    //        e.style.display = 'none';
    //    }
    //};     

    var params='<%=request.getContextPath()%>/request/dashboard/drilldown/callSurveyDetailAjax.html?surveyResponseId='+surveyResponseId;
    YAHOO.plugin.Dispatcher.fetch(e,params, {onLoad:showBackground});
}

var showBackground = function() {
    var e = document.getElementById("survey");
    var bkgd = document.getElementById("surveyBackground");
    bkgd.style.width = e.innerWidth();
    bkgd.style.height = e.innerHeight();
    bkgd.style.left = e.offsetWidth();
    bkgd.style.top = e.offsetHeight();
}

window.onload = function() {
    var focusinput = document.getElementById('focusinput');
    focusinput.focus();//set focus so we know when they click outside
}
</script>

в CSS поместите это

.surveyResponseWindow 
{
width:500px;
height:600px;
z-index: 2;
position: absolute;
top:100px;
left:150px;
border:1px solid #AAAAAA;   
border-bottom-left-radius:10px;
border-bottom-right-radius:10px;
border-top-left-radius:10px;
border-top-right-radius:10px;   
box-shadow: -1px 7px 15px -2px #000;
}

.surveyBackgroundDiv 
{
z-index: 1;
position: absolute;
top:100px;
left:150px;
width:500px;
height:600px;
border:1px solid #AAAAAA;   
border-bottom-left-radius:10px;
border-bottom-right-radius:10px;
border-top-left-radius:10px;
border-top-right-radius:10px;   
box-shadow: -1px 7px 15px -2px #000;
}

Ответ 8

Я считаю, что это настройка браузера, а не бэкэнд веб-сайтов. Однако я могу ошибаться.