Как можно заставить веб-страницу отправить на принтер что-то другое, чем, что находится в окне браузера?

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

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

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
11
задан Prestaul 17 September 2008 в 21:20
поделиться

15 ответов

Да, можно применить CSS принтера. Существует хорошая статья об этом здесь.

22
ответ дан 3 December 2019 в 01:54
поделиться

nsayer упоминает, что имел изменение кнопки печати расположение Вашего экрана и затем начал a window.print()

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

Используя jQuery, Вы могли сделать что-то вроде этого (не проверенный):

$(document).ready(function(){
    $("#printFriendly").click(function(){
       $(link[rel=link][media=screen]).remove();
       $(link[rel=link][media=print]).attr("media","screen");
    });
});
0
ответ дан 3 December 2019 в 01:54
поделиться

Можно определить правила CSS, которые характерны для типа среды. Следующее является примером CSS (скопированный с http://www.w3.org/TR/CSS2/media.html, разделите 7.2.1), который указывает различные размеры шрифта, что отображено на веб-странице и что печатается.

 @media print {
    BODY { font-size: 10pt }
  }
  @media screen {
    BODY { font-size: 12pt }
  }
  @media screen, print {
    BODY { line-height: 1.2 }
  }

С другой стороны, можно указать, какие медиа к таблице стилей нужно относиться когда включая его на странице:

 <link href="webstyles.css" type="text/css" rel="stylesheet" media="screen"/>
 <link href="printstyles.css" type="text/css" rel="stylesheet" media="print"/>
 <link href="commonstyles.css" type="text/css" rel="stylesheet" media="screen,print"/>
0
ответ дан 3 December 2019 в 01:54
поделиться

Еще одна опция состоит в том, чтобы иметь скрытый IFRAME, на котором Вы называете iframe.contentWindow.print (). Это позволит Вам создавать невидимое расположение, которое печатает точно, поскольку Вы хотите его к.

Конечно, еще лучшее решение состоит в том, чтобы экспортировать файл в PDF и позволить пользователю распечатать его тот путь. PDFs производят вывод высшего качества, период. Однако это - еще один обруч для пользователя для перехода через, таким образом, эмпирическое правило:

  • PDFs для того, когда расположение печати имеет значение
  • HTML для того, когда чистый текст более важен, чем расположение
0
ответ дан 3 December 2019 в 01:54
поделиться

Что-либо, что можно сделать с CSS, который можно сделать в таблице стилей печати. Это означает, что можно скрыть содержание в печатной версии, которую показывают в экранизации, или скройте содержание в экранизации, которую Вы хотите разоблачить при печати. Все, что Вы делаете, применяют display:none к соответствующим разделам в соответствующей таблице стилей.

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

0
ответ дан 3 December 2019 в 01:54
поделиться

CSS позволяет Вам создавать таблицы стилей для конкретных типов медиа, означая, что у Вас может быть таблица стилей, которая только применяется, когда Вы печатаете страницу, позволяя Вам заставить его быть отформатированным по-другому.

Просто включайте медиа = атрибут "печати" на Вашей ссылке таблицы стилей для той таблицы стилей.

Это статья List Apart, кажется, довольно хорошо на предмете.

0
ответ дан 3 December 2019 в 01:54
поделиться

Я пытался использовать различные таблицы стилей на основе медиа, но я столкнулся с проблемой, получив все опции, в которых я нуждался. С тех пор я обычно перенаправляю к другому входу нашего (Коробка с плавкими предохранителями) платформу (т.е. print.php в земельном участке index.php), который в сущности является тем же файлом кроме него, устанавливает дополнительный флаг / постоянный.

В файле XSL, связанном со страницей, я затем делаю дополнительную работу на основе того флага / постоянный как игнорирование меню, столбцов таблицы и т.д.

т.е. (Страница показывает ссылку, что пользователь должен нажать для отображения пароля на экране. Печатной версии распечатали пароль.)

if (!BOOL_PRINT)
  echo "<TD class=\"tbl_teams_scroll_item\"><SPAN class=\"span_password_hidden\" id=\"span_password_{\$team_id}\" onClick=\"RevealPassword('{\$team_id}','{\$password}');\"><xsl:value-of select=\"/PAGE/TEXTS/HIDDEN\" /></SPAN></TD>\n";
else
  echo "TD class=\"tbl_teams_scroll_item\"><xsl:value-of select=\"PASSWORD\" /></TD>\n";
0
ответ дан 3 December 2019 в 01:54
поделиться

Существует несколько опций, доступных Вам:

  • Можно открыть новое окно с немного отличающимися данными, которые будут распечатаны.
  • Существуют также стили CSS, которые можно использовать для изменения макета страницы.
  • Наконец можно указать completly различные таблицы стилей для экрана, распечатанных медиа, читатели Braille и т.д.

например. <link href="css/print.css" type="text/css" rel="stylesheet" media="print" />

См. также Ссылку Печати CSS2

1
ответ дан 3 December 2019 в 01:54
поделиться

Используйте таблицу стилей печати.

Править: Относительно продолжения Вы не можете, в целом, добавить вещи к странице с CSS.

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

Другая опция состоит в том, чтобы использовать сгенерированное содержание, но это не поддерживается Internet Explorer 7 и ниже и может быть вполне ограничено.

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

1
ответ дан 3 December 2019 в 01:54
поделиться

Иначе при желании должен иметь кнопку 'печати' на изменении страницы страница в некотором роде, что Вы решаете, затем выполняете JavaScript 'window.print ()'; поднять диалоговое окно печати браузера.

1
ответ дан 3 December 2019 в 01:54
поделиться

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

@media print {
  .sidebar { display: none; }
}

Можно также связать отдельную таблицу стилей для печати:

<link rel="stylesheet" href="print.css" type="text/css" media="print" />
2
ответ дан 3 December 2019 в 01:54
поделиться

Можно сделать это с CSS при определении медиа как печати.

2
ответ дан 3 December 2019 в 01:54
поделиться

Самый легкий путь состоит в том, чтобы использовать типы среды CSS. Для каждого файла CSS Вы включаете, можно указать, где он должен использоваться: на экране, при печати, для карманных компьютеров, для программ для чтения с экрана или различных комбинаций их.

Пример: <связывают рэл = тип "таблицы стилей" = медиа "текста/CSS" = "печать, карманный компьютер" href = "foo.css">

Это было стандартом начиная с CSS2, и большинство браузеров поддерживает его теперь. Больше информации доступно здесь: http://www.w3.org/TR/CSS2/media.html

0
ответ дан 3 December 2019 в 01:54
поделиться

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

Используйте тег link:

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

встроить Вашу таблицу стилей в Ваш документ.

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

.newStyle1 {
    display: none;
}

Затем что-либо набор к стилю newStyle1 не будет отображен.

7
ответ дан 3 December 2019 в 01:54
поделиться

Вот еще одна ссылка из A List Apart, касающаяся печати css под названием Печать книги с помощью CSS: Boom! http://www.alistapart.com/articles/boom/

0
ответ дан 3 December 2019 в 01:54
поделиться