Как распечатать html документ
Перейти к содержимому

Как распечатать html документ

  • автор:

Как распечатать html документ

Народ, подскажите как распечатать HTML документ, выведенный на управляемую форму в поле с видом HTML документа.

В поле тык, на принтер жмак.
Или тебе программно?
(1) желательно программно.

(2) короче я замучился. мне надо распечатать сертификаты-картинки, которые я не хочу хранить в базе . думаю как это реализовать на управляемых формах

читаю их в поле html документа — из каталога — выводятся. может что-нить поумнее кто предложит
Элементы.ПолеHTML.Документ.print() что-то типа
print — тоже.
Элементы.ПолеРисунков.Документ.execCommand(«Print»);

(9) в (8) работает все сделано на клиенте:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
НайденныеФайлы = НайтиФайлы(«c:\1», «*.jpg»);
КартинкиКаталога = «»;
Для Каждого Стр ИЗ НайденныеФайлы Цикл
КартинкиКаталога = КартинкиКаталога + «

«;
КонецЦикла;
ЭтаФорма.ПолеРисунков = «»
+КартинкиКаталога
+»«;
КонецПроцедуры

(10) ну не вопрос, я думал может ты расковырял как напечатать напрямую

(11) к сожалению нет.

надо чтобы оператор сканы кидал в определенную папочку, обработка их видела и печатала «по кнопочке».

еще момент, а как на принтер послать «разрыв страницы»

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

Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn

Javascript печать блока с HTML страницы

При создании очередного сайта столкнулся с задачей печати HTML-страницы. На странице была информация о проекте (коттеджи) и ее нужно было по клику распечатать. Для решения идеально подходит Javascript. Итак, создаем такую структуру:

Обязательно задаем идентификатор. Содержимое может быть любым. Далее напишем небольшую функцию для печати веб-страницы:

  

И немного поясню. Эта функция откроет новое popup-окно, вызовет функцию печати. После печати автоматически закроет окно. В новое окно передается содержимое блока print-content. Также вызываем стили CSS, чтобы отформатировать содержимое. И, конечно, надо вызывать функцию. Делаем через Javascript функцию onClick:

Ну вот и все. Просто и с душой.

Если браузер не видит CSS стили

Если браузер по той или иной причине не хочет видить CSS, то можно упростить код, удалив пару строк:

 function CallPrint(strid) 

Материалы:

Печать HTML страниц

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

Неудачный пример версии для печати

Подключение CSS

Доступно три метода подключения CSS-стилей.

Специальный CSS-файл:
Правило @media print:
@media print

Третий метод – отдельная страница или шаблон, свёрстанные чисто под печать (без @media print ), например так сделана печать писем в Яндекс.Почте. Такой метод существенно облегчает отладку.

Размер страницы

Лист в формате А4 имеет размер 210×297 мм, его можно указать:

@media print < html, body< height: 297mm; width: 210mm; >>
  • при dpi=75, А4 имеет 877×620 px
  • при dpi=150, А4 имеет 1754×1240 px
  • при dpi=300, А4 имеет 3508×2480 px

Поля

В целях экономии бумаги лучше использовать минимальные поля – 10 мм по краям и 20 мм слева для возможности брушеровки.

@page

Поля по ГОСТ Р 6.30-2003 (оформление документов):

@page

По ГОСТ 7.32-2017 (научные работы, рефераты):

@page

Удаление лишних стилей

Тени и другие эффекты дизайна лучше убрать, также следует установить черный цвет шрифта.

@media print < *, *:before, *:after < color: #000; box-shadow: none; text-shadow: none; >>

Размер шрифта

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

@media print < html, body < font-size: 14px; >h1 < font-size: 24px; >h2 < font-size: 20px; >h3 < font-size: 18px; >>

Скрытие лишних элементов

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

@media print < .header, .footer, .banner < display: none; >>

Другой вариант скрытия не нужного контента – в HTML-коде, добавить к скрываемым элементам класс noprint .

@media print < .noprint < display: none; >>

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

@media print < .wrapper < width: auto; margin: 0; padding: 0; >>

Показ элемента только при печати

@media screen < .element < display: none; >> @media print < .element < display: block; >>

Печать фона background

По умолчанию браузеры не печатают background у элементов, но его можно пустить на печать принудительно c помощью свойства -webkit-print-color-adjust: exact; и нового color-adjust: exact; .

@media print < * < -webkit-print-color-adjust: exact !important; color-adjust: exact !important; >>

Уточнение: свойство не будет работать если цвет фона и шрифта слабоконтрастные.

Разрывы страниц

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

@media print < ul, ol, table < page-break-inside: avoid; >>

Если требуется принудительно сделать перенос после элемента:

@media print < article < page-break-inside: always; >>

Отображение URL в ссылках

Печать ссылок бесполезна т.к. будет не известно, куда они ведут. Можно добавить приписку URL рядом с анкором (исключая якорные ссылки).

@media print < a[href^="http"]:after < content: " (" attr(href) ")"; >>
Пример вставки URL:

Вывод QR-кода при печати

Будет очень удобно если на печатаной странице будет QR-код с ссылкой на сайт. Сгенерировать код можно с помощью сервиса «Google QR Codes» и вставить его с помощью JQuery.

$(function()< $(window).bind('beforeprint', function()< if($("#print-qr").length == 0) < $('body').append( '' + '

' ); > >); >);

Размещение QR-кода на странице для печати

Еще один метод вставки QR-кода через CSS, но он требует подставки URL текущей страницы через PHP.

  

Запуск печати

В JS, печать запускается методом window.print() . Возможны следующие варианты: Запуск печати по клику на ссылку:

 $(function($)< $(".action-print").click(function()< window.print(); return false; >); >); 

Следующий вариант – пользователь переходит на следующую страницу, где сразу начинается печать, после пользователь возвращается на исходную.

  

И последний вариант – печать происходит в отдельной вкладке браузера, после печати она автоматически закрывается.

  

Распечатать HTML-документ из командной строки

Есть потребность распечатать HTML-документ из командной строки, не задавай пользователю никаких вопросов. (Печать нужна в отрендеренном виде, а не самого файла 🙂 Базовая система — KDE. При необходимости можно написать программку (лучше на python/perl/ruby).

Какое наиболее простое решение для этого? html2ps + kprinter не подошло по причине страшной кривости первого. C++ и KHTML будет рассмотрен в последнюю очередь.

sv75 ★★★★★
29.06.07 17:20:54 MSD

Re: Распечатать HTML-документ из командной строки

а может links —dump | lpq?

rexadecimal ★
( 29.06.07 17:34:57 MSD )
Ответ на: Re: Распечатать HTML-документ из командной строки от rexadecimal 29.06.07 17:34:57 MSD

Re: Распечатать HTML-документ из командной строки

Но у меня лично при этом проблемы с кириллицей возникают.

anonymous
( 29.06.07 17:56:09 MSD )
Ответ на: Re: Распечатать HTML-документ из командной строки от rexadecimal 29.06.07 17:34:57 MSD

Re: Распечатать HTML-документ из командной строки

> links —dump | lpqlinks —dump | lpq

Lor, блин. Plain-text не нужно. Нужна красивая картинка. Там пара табличек со шрифтами разного размера. Так что уж лучше konqueror blank.htm и там просить пользователя нажать Ctrl+P.

sv75 ★★★★★
( 29.06.07 18:46:18 MSD ) автор топика
Ответ на: Re: Распечатать HTML-документ из командной строки от sv75 29.06.07 18:46:18 MSD

Re: Распечатать HTML-документ из командной строки

anonymous
( 29.06.07 19:35:15 MSD )

Re: Распечатать HTML-документ из командной строки

Была такая проблема на работе. Решилась быть может тяжёлым путём. Использовали soffice.

anonymous
( 30.06.07 13:56:21 MSD )
Ответ на: Re: Распечатать HTML-документ из командной строки от anonymous 30.06.07 13:56:21 MSD

Re: Распечатать HTML-документ из командной строки

Писать обработчики для xml,html и подобных форматов, по-моему, удобнее всего на Ruby, хотя в perl могут быть готовые библиотеки для определенного круга задач. А вообще обработать произвольный документ в формате html задача не простая т.к. этот формат не строгий — то есть допустимы разночтения, и разные браузеры обрабатывают такие неоднозначности и даже ошибки по-разному, вследствие чего некоторые документы отлаживаются под конкретные браузеры или (часто, к сожалению, с закрытым исходным кодом — и непонятно как они что обрабатывают), и становится неясно как обрабатывать те или иные ситуации. Хотя, возможно, я сгущаю краски.

Alex_87
( 30.06.07 23:25:00 MSD )
Ответ на: Re: Распечатать HTML-документ из командной строки от sv75 29.06.07 18:46:18 MSD

Re: Распечатать HTML-документ из командной строки

Открываешь конкверор, потом копаешь dcop на предмет печати, там это должно быть. После отладки скрипта всталяешь в него что-то типа «dcop konqueror konqueror-mainwindow#1 hide» чтоб его окно не показывалось на десктопе. dcop рулит 🙂

Sherak ★☆
( 01.07.07 00:35:44 MSD )
Ответ на: Re: Распечатать HTML-документ из командной строки от Sherak 01.07.07 00:35:44 MSD

Re: Распечатать HTML-документ из командной строки

Вот я пожалуй в это сторону покапаю сначала, спасибо.Заодно про dcop почитаю.

sv75 ★★★★★
( 03.07.07 12:14:47 MSD ) автор топика
Ответ на: Re: Распечатать HTML-документ из командной строки от sv75 03.07.07 12:14:47 MSD

Re: Распечатать HTML-документ из командной строки

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *