Проблема с печатью в IE

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

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

Когда мы печатаем из firefox, он печатает правильно. Однако при печати из IE 7 подписи часто размещаются вместе, значительно выше связанного с ними изображения. Это также отображается в «Предварительном просмотре печати».

Структура страницы такая:

<head>
stuff
</head>
<body>
<div class="ContentDisplay">
        <div id="contentcontainer" class="threecolumn general">
            <div id="maincontent" class="content">
                <div id="ctl00_mainContent_contentHolder">
                <br></br><div>
<h2><span id="ctl00_mainContent_ctl02_lblGuestBook">Guest Book</span></h2>

<div class="tribute_holder">
    <div class="tribute_info" style="padding-bottom: 1px;">

    <p></p>

    <p></p>

    </div>

    <div class="pagination audiopaging">

    </div>
    <br />
    <div id="ctl00_mainContent_ctl02_gbPanel" class="tributes">



             <div>
              <h3>
               Text</p>
             </div>



</div>
 </div>



</div><br></br><div>
<h2><span id="ctl00_mainContent_ctl05_lblImages">Images</span></h2>


<div id="ctl00_mainContent_ctl05_plainImages">

    <span id="ctl00_mainContent_ctl05_plainImagesLabel"></span>
<div style="clear:both;"><div style="margin-left:auto;margin-right:auto;" class="torncontainer"><div class="tornborder">
        <div>
            <div>
                <div>
                    <div>
                        <img src="image path" alt="caption 1" style="border-width:0px;" />
                    </div>
                </div>
            </div>
        </div>
        </div>
</div>
<div style="text-align:center;margin-bottom:2em;clear:both;">caption 1</div>
</div>
<div style="clear:both;">
<div style="margin-left:auto;margin-right:auto;" class="torncontainer"><div class="tornborder">
        <div>
            <div>
                <div>
                    <div>
                        <img src="image source" alt="caption 2" style="border-width:0px;" />
                    </div>
                </div>
            </div>
        </div>
    </div></div><div style="text-align:center;margin-bottom:2em;clear:both;">caption 2</div></div>

и Т. Д.

Подводя итог, фактическое изображение содержится в div класса «tornborder», который содержит 4 вложенных div, а затем изображение (этот класс используется для рендеринга графической границы вокруг изображения), за которым следует div, содержащий заголовок. Оба этих элемента div содержатся в другом элементе div, оба из которых очищены.

Когда раздел «Гостевая книга» не включен (например, когда эта функция не выбрана для печати), изображения печатаются правильно.

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

Любые идеи?

РЕДАКТИРОВАТЬ: Просто чтобы было ясно, это соответствующая часть кода, с большим количеством поспешного удаления текста. Все теги на реальной странице правильно закрыты и вложены. Страница является допустимым HTML.

РЕДАКТИРОВАТЬ второе:

Вот соответствующая информация CSS, это вся таблица стилей «печать»:

/* Torn Border */
.tornborder div
{
    background: url(/images/universal/tl.jpg) top left no-repeat;
    float: left;
    margin: 0 0 20px 0;
}
.tornborder div div
{
    background: url(/images/universal/tr.jpg) top right no-repeat;
    margin: 0;
    padding: 15px 0 0 0;
}
.tornborder div div div
{
    background: url(/images/universal/rb.jpg) top right repeat-y;
    margin: 0;
    padding: 0;
}
.tornborder div div div div
{
    background: url(/images/universal/bl.jpg) bottom left no-repeat;
}
.tornborder div div div div img
{
    background: url(/images/universal/br.jpg) bottom right no-repeat;
    margin: -15px 0 0 0;
    padding: 15px;
    /*width: 130px;*/
}

#ie7andup .tornborder div div div div img, #ie6andbelow .tornborder div div div div img
{
    margin: -15px 0 -5px 0;
    display:inline-block;
}

Блок div вокруг всей страницы (только внутри тела) позволяет настраивать таргетинг IE7 через блок div '#ie7andup', размещенный там с помощью условных комментариев.


person Jeff    schedule 23.04.2009    source источник
comment
Было бы чрезвычайно сложно ответить на этот вопрос, практически не имея информации о css.   -  person Traingamer    schedule 23.04.2009
comment
Учитывая сложность задействованных html и css, очень сложно диагностировать без тестирования в firebug. Если вы каким-то образом сделаете страницу доступной или упростите код до минимума, необходимого для создания ошибки, я смогу ее понять.   -  person Jethro Larson    schedule 23.04.2009
comment
В порядке. www2.dev.mem.com/Display/ContentDisplay.aspx?ID= 4411376 На правой панели навигации нажмите "Печать". Выберите параметры из списка (самый простой способ воспроизведения, который я нашел, - это выбрать «Гостевая книга» и «Изображения», изображения сами по себе НЕ отображают ошибку печати). Мне любопытно, как поможет Firefox с Firebug, поскольку это происходит только в IE7.   -  person Jeff    schedule 23.04.2009
comment
эээ, на самом деле, уничтожьте '/ DISPLAY', который используется только для локальной разработки. www2.dev.mem.com/ContentDisplay.aspx?ID=4411376   -  person Jeff    schedule 23.04.2009


Ответы (3)


Хорошо, учитывая, что я знаю, что это происходит только тогда, когда изображения следуют за текстом (например, из истории или гостевой книги). Я меняю порядок флажков — изображения теперь всегда будут первыми.

Ошибка исчезнет, ​​но не будет решена.

Не оптимальное решение, но я уже потратил на это более 16 часов.

person Jeff    schedule 24.04.2009

В прошлом я сталкивался с подобными проблемами, связанными с очисткой поплавков в ie. Попробуйте задать вашим изображениям и подписям явную ширину в CSS. ширина:авто; может даже сделать.

person wheresrhys    schedule 23.04.2009

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

person braindice    schedule 23.04.2009