IE печатает пустую строку после пробела, когда пробел предшествует тегу <br>, при печати на реальном принтере, но не когда браузер IE отображает HTML - PullRequest
3 голосов
/ 10 марта 2012

Сегодня я столкнулся с проблемой стилей при печати страницы HTML на принтере из IE 9 (но не при печати на принтере в других браузерах). Я использовал CutePDFWriter для того же, что и принтер, и воспроизвел его. Если вы просматриваете HTML в браузере, то под семейством веществ Барбитураты для IE 9 или любого другого браузера нет пустой строки. Это тег trd таблицы с несколькими строками. Строка с пробелом в конце и последующим знаком <br> выводит пустую строку. Я дважды проверил стили, и в любых стилях нет атрибута media = 'print'. Если я удаляю пробел в конце строки, он не печатает пустую строку. В конце концов, я решу это с помощью процесса исключения на следующей неделе, но если вы гений CSS и можете сказать мне, что является причиной этого, я дам вам несколько очков.

Да, я могу решить эту проблему, убрав пробел, но я приму только те ответы, которые говорят мне, какой стиль (ы) вызывает этот или какой стиль (ы) для добавления.

enter image description here

Я удалил всю разметку HTML вокруг этой проблемы, чтобы можно было легко увидеть HTML.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">


        <title>SNIP</title>
    <script type="text/javascript" src="report_files/prototype.js"></script>
    <script type="text/javascript" src="report_files/script.js"></script>
    <script type="text/javascript" src="report_files/effects.js"></script>
    <script type="text/javascript" src="report_files/window.js"></script>
    <script type="text/javascript" src="report_files/md5.js"></script>
    <script type="text/javascript" src="report_files/jquery-1.js"></script>
    <script type="text/javascript" src="report_files/jquery-ui-1.js"></script>
    <script type="text/javascript">
        $.noConflict();

        jQuery(document).ready(function() {
          jQuery('.LIMSFormField').focus(function() {
              jQuery(this).css('border-color', '#000000');
              jQuery(this).css('background-color', '#90EE90');
          }).blur(function() {
              jQuery(this).css('border-color', '#FFFFFF');
              jQuery(this).css('background-color', '#7AC5CD');
          });
        });
    </script>
    <script type="text/javascript" src="report_files/droplinemenu.js"></script>
    <script type="text/javascript">
      droplinemenu.buildmenu("mainMenu");
    </script>

    <script type="text/javascript" src="report_files/jslib.js"></script>
                <meta name="vs_defaultClientScript" content="JavaScript">
                <meta http-equiv="Expires" content="0">
                <meta http-equiv="Cache-Control" content="no-cache">
                <meta http-equiv="Pragma" content="no-cache">

    </head>
        <body>
            <div id="sessionRefresh" style="display:none">
                        <div style="text-align: center; width: 250px">
                            <div>Your session is about to expire</div>
                            <div id="btnRefresh" class="submitbutton" style="margin: 15 auto; float:none">
                                <a href="javascript:void(0)" onclick="resetSessionTimer()">Keep Alive</a>
                            </div>
                            <div style="clear:both"></div>
                        </div>
                    </div>

        <script type="text/javascript" language="JavaScript">
            var currentDS = new Date(2012,3,9,15,37,13);
            var forceLogOffDS = new Date(2012,3,9,16,7,13);
            var forceLogOffDifference = forceLogOffDS - currentDS;
            var logoutTimer = window.setTimeout('LogoffSessionTimeout()', forceLogOffDifference);
        </script>
<form name="Form1" method="post" action="ResultReportPrintPage.aspx?TestIds=956542%2c956543%2c956545%2c956546&amp;ShowSummary=False&amp;CausePrintDialog=True" onsubmit="javascript:return WebForm_OnSubmit();" id="Form1">
<div>
<input name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTQ4NDA1OTg3OWRkdXgKbQNiK5Ot/Yx+zK7sKevaBb8=" type="hidden">
</div>


<script type="text/javascript">
//<![CDATA[
function WebForm_OnSubmit() {
return CheckSubmit();
return true;
}
//]]>
</script>

<style type="text/css">
    td, select, input, .copyright, div
    {
        font-family: "times new roman";
        font-size: 12px;
        color: #000000
    }
    .worksheetPage { font-size: 12; width: 100%; height: 98%; page-break-after: always }
    .lastWorksheetPage { font-size: 12; width: 100%; height: 98% }
    .ResultDetails { }
    .ResultDetails td { }
    .UnderlinedCell { border-bottom: 1px solid #0066cc; PADDING-RIGHT: 10px; PADDING-LEFT: 10px }
    .LanAndSpecimenId td { font-size: 14px }
    .LanAndSpecimenIdLabel { text-align: right }
    .LanAndSpecimenIdValue { border-bottom: 1px solid #0066cc; font-weight: bold; text-align: center; PADDING-RIGHT: 15px; PADDING-LEFT: 15px }
    .DatesValue { text-align:center; border-bottom: 1px solid #0066cc; PADDING-RIGHT: 10px; PADDING-LEFT: 10px }
    .FirstTestName { font-weight: bold; font-size: 17 px }
    .TestDescription { font-size: 12px }
    .ProcessHeader { font-weight: bold; font-size: 14px; border-bottom: 1px solid #0066cc }
    .ProcessDetails { }
    .SubProcessDetailsHeader td { font-weight: bold; font-size: 15px }
    .ExplainMeasurements td { font-style: italic; font-size: 13px; border-bottom: 1px solid #0066cc }
    .HighlightedSubprocessResults { font-weight: bold }
    .BigFinalResults { border: 2px solid #000000 }
    .BigFinalResultsHeader { font-weight: bold; font-size: 16px; border-bottom: 2px solid #000000 }
    .BigFinalResultsResult { font-weight: bold; font-size: 14px }
    .BigFinalQuantitative { font-weight: bold; font-size: 14px }
    .NotesHeader { text-align:center; font-weight: bold }
    .NotesTable td { font-size: 12 px }
    .CompanyContactFooter { text-align: center; font-weight: bold; font-size: 13px }

    .worksheetGrid { width: 100%;border: 1px solid #000000 }
    .worksheetGrid td, th { border-right: 1px solid #000000;border-bottom: 1px solid #000000 }
    th
    { COLOR: #003366; vertical-align:   baseline;
        font-size:  1em;
        font-weight:    bold;
        word-spacing:   normal;
        letter-spacing: normal;
        text-transform: none;
        font-family: Arial, Helvetica, sans-serif
    }
</style>
        <link rel="stylesheet" type="text/css" href="report_files/NYReports.css">

        <table>
            <tbody><tr>
                <td>
                    <table style="border-width: 0px;" cellpadding="0" cellspacing="0">

                        <tbody><tr>
                            <td>Test(s) Requested:</td>

                            <td>
                                <img src="report_files/spacer.gif" alt="" height="1" width="20">
                            </td>
                            <td class="FirstTestName">Oral Fluid 10 Drug Panel Test</td>
                        </tr>
                    </tbody></table>
                </td>
            </tr>
            <tr><td class="TestDescription">The Oral Fluid 10 Drug Panel Test includes:<br>Amphetamine - Amphetamine<br>Methamphetamine/Ecstasy (MDMA) - Methamphetamine, Ecstasy (MDMA), MDA, MDEA<br>Cocaine - Cocaine, Benzoylecgonine<br>Opiates - Codeine, Morphine, Heroin Metabolite, Hydrocodone (Vicodin, Lorcet, Lortab)<br>Phencyclidine (PCP)<br>THC (Marijuana)<br>Barbiturates - Secobarbital, Butabarbital, Butalbital, Pentobarbital, Phenobarbital and Amobarbital <br />Benzodiazepines  - Diazpam, Nordiazepam, Alprazolam and alpha-hydroxyalprazolam<br>Oxycodone (Percocet)<br>Methadone</td></tr>
        </tbody></table>


        </body></html>

1 Ответ

2 голосов
/ 10 марта 2012

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

Обычно в представлении HTML это игнорируется, потому что этот конец пробела удаляется (браузером), как будто его не существует.Но, по-видимому, переходя в режим печати, этот пробел только частично игнорируется.Это игнорируется в том смысле, что дополнительное пространство не используется для продолжения расширения таблицы, но функция печати по какой-либо причине все еще видит, что она там есть.Итак ...

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

Вы уже определили одно решение для этой ошибки: удаление пробела в конце строки.Имейте в виду, что это произойдет с любой строкой, которая окажется самой длинной строкой в ​​тексте и также будет иметь пробел в конце строки.Например, если бы я полностью удалил эту строку и добавил пробел в конце строки MDEA (которая является следующей по длине), у этой строки был бы «запасной разрыв строки» под ней, следуя той же схеме.

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

Также, как указано в комментариях, вы используете Режим совместимости IE7 , в котором и находится ошибка.IE9 на самом деле не имеет этой ошибки (я тестировал), поэтому удаление этого мета-элемента также решило бы проблему (если вам не нужен режим совместимости).

...