Страницы

Поиск по вопросам

Показаны сообщения с ярлыком печать. Показать все сообщения
Показаны сообщения с ярлыком печать. Показать все сообщения

суббота, 8 февраля 2020 г.

Печать javascript

#javascript #веб_программирование #печать


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

function printit(divName){ 
  var printContents = document.getElementById(divName).innerHTML;
  var originalContents = document.body.innerHTML;

  document.body.innerHTML = printContents;

  window.print();

  document.body.innerHTML = originalContents;
}


Когда нажимаю на печать, выходит окно браузера для настроек печати. Хотелось бы обойтись
без этого окна и предварительного просмотра страницы. Просто лишние кнопки еще нажимать,
а у меня и так уже стоит кнопка печать, а потом еще одна, и для пользователей будет
неудобно. Как бы избавиться от этого окна настроек? Помогите. :)
    


Ответы

Ответ 1



Для пользователя будет неудобно, если он не сможет настроить параметры печати. Вдруг он хочет печатать на двух сторонах листа, или несколько страниц на одном листе, или он захочет изменить масштаб страницы перед печатью? Или вдруг вы спамер и желаете забросать пользователя кучей рекламы, распечатанной без его согласия? Именно поэтому браузеры не позволяют JavaScript'у принудительно начать печать без явного подтверждения пользователя. Всё, что вы можете сделать в данной ситуации - просто забить.

Ответ 2



Данная функциональность реализована на уровне браузера, и ее нельзя отключить. Так что от этого окна print preview Вы никак не избавитесь, увы.

Ответ 3



Есть решение, для Google Chrome нужно в ярлыке поставить ключ --kiosk-printing. После этого браузер будет печатать сразу без дополнительных настроек и выбора принтера.

суббота, 11 января 2020 г.

Кроссбраузерная автоматическая печать изображения (решено)

#javascript #печать #кроссбраузерность


Задача: сделать на сайте так, чтобы графический файл автоматически отправлялся на
принтер. Сама печать легко запускается через window.print(), но при этом распечатанный
результат получается разного размера из разных браузеров: из IE печатается, как и задумано,
на весь лист А4, из Firefox картинка занимает меньше четверти листа, из Opera и Chrome
— нечто среднее. Пробовал устанавливать размер картинки через CSS, указывая в качестве
единицы измерения дюймы (in) — не помогает.
Как сделать, чтобы рисунок печатался на полный лист из любого браузера?
UPD: Решил проблему, установив для рисунка width:100% через css media=print    


Ответы

Ответ 1



Браузеры практически не дают управлять параметрами печати. Для Опреы и Хрома можно указать отступы в CSS: @media print{ @page: {margin: 0%} } Остальные браузеры это игнорируют, подставляют значения, указываемые пользователем (или по дефолту). То же касается колонтитулов - полностью пользовательская настройка. А так печать картинки при выставленных одинаковых параметрах отступов, колонтитулов и галки "по ширине страницы" печатается одинаково. Устанавливайте картинке width:100% в правилах для @media print, дальнейшее будет зависеть от пользователя.

Ответ 2



Вариант 1: переопределить css картинки через @media print{}. Вариант 2: перед печатью установить нужные настройки печати. Но этим будет заниматься пользователь - все-таки, принтер его.

Ответ 3



Специально для вас подумал и вот что придумал: function atoprint(src) { var atext = ''; var captext = window.document.title; var alink = window.document.location; var prwin = open(''); //prwin.document.open(); prwin.document.writeln(htmls.text3); prwin.document.writeln('

'+captext+'<\/h1>'); prwin.document.writeln('
'+atext+'<\/div>'); prwin.document.writeln('
© site.ru<\/div>'); prwin.document.writeln('
Страница материала: '+alink+'<\/div>'); prwin.document.writeln('<\/div><\/body><\/html>'); prwin.print(); prwin.close; }; передаете только src ну и в разметке что у меня есть тоже можете что нибудь поправить!

суббота, 4 января 2020 г.

Как из приложения отправить что-либо на принтер?

#c_sharp #winforms #печать #принтер


Как из консольного приложения или приложения WinForms отправить что-либо на принтер?
    


Ответы

Ответ 1



Минимально необходимо для печати: using System.Drawing.Printing; using System.Drawing; void Print() { PrintDocument printDoc = new PrintDocument(); printDoc.PrintPage += PrintPageHandler; printDoc.Print(); } void PrintPageHandler(object sender, PrintPageEventArgs e) { //Замените на e.Graphics.DrawImage или любую другую логику e.Graphics.DrawString("Привет", new Font("Arial", 14), Brushes.Black, 0, 0); } при этом печать будет на дефолтном принтере. PrintDialog позволяет выбрать принтер и настроить некоторые параметры PrintDocument через диалоговое окно, но за печать отвечает именно PrintDocument. Расширим пример для использования PrintDialog: PrintDocument printDoc = new PrintDocument(); printDoc.PrintPage += PrintPageHandler; PrintDialog printDialog = new PrintDialog(); printDialog.Document = printDoc; if (printDialog.ShowDialog() == DialogResult.OK) printDialog.Document.Print(); Убираем всплывающие окошки, если в них нет необходимости: printDoc.PrintController = new StandardPrintController(); По аналогии с добавлением PrintDialog, можно добавить PageSetupDialog и PrintPreviewDialog последовательно передавая им объект PrintDocument.

вторник, 23 апреля 2019 г.

Как из приложения отправить что-либо на принтер?

Как из консольного приложения или приложения WinForms отправить что-либо на принтер?


Ответ

Минимально необходимо для печати:
using System.Drawing.Printing; using System.Drawing;
void Print() { PrintDocument printDoc = new PrintDocument(); printDoc.PrintPage += PrintPageHandler; printDoc.Print(); }
void PrintPageHandler(object sender, PrintPageEventArgs e) { //Замените на e.Graphics.DrawImage или любую другую логику e.Graphics.DrawString("Привет", new Font("Arial", 14), Brushes.Black, 0, 0); }
при этом печать будет на дефолтном принтере. PrintDialog позволяет выбрать принтер и настроить некоторые параметры PrintDocument через диалоговое окно, но за печать отвечает именно PrintDocument
Расширим пример для использования PrintDialog
PrintDocument printDoc = new PrintDocument(); printDoc.PrintPage += PrintPageHandler; PrintDialog printDialog = new PrintDialog(); printDialog.Document = printDoc; if (printDialog.ShowDialog() == DialogResult.OK) printDialog.Document.Print();
Убираем всплывающие окошки, если в них нет необходимости:
printDoc.PrintController = new StandardPrintController();
По аналогии с добавлением PrintDialog, можно добавить PageSetupDialog и PrintPreviewDialog последовательно передавая им объект PrintDocument

воскресенье, 14 апреля 2019 г.

Печать javascript

Пишу небольшую программу, которая в конце должна отправлять кое-какие данные в печать. Так вот я печать сделала на JavaScript.
function printit(divName){ var printContents = document.getElementById(divName).innerHTML; var originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents; }
Когда нажимаю на печать, выходит окно браузера для настроек печати. Хотелось бы обойтись без этого окна и предварительного просмотра страницы. Просто лишние кнопки еще нажимать, а у меня и так уже стоит кнопка печать, а потом еще одна, и для пользователей будет неудобно. Как бы избавиться от этого окна настроек? Помогите. :)


Ответ

Для пользователя будет неудобно, если он не сможет настроить параметры печати. Вдруг он хочет печатать на двух сторонах листа, или несколько страниц на одном листе, или он захочет изменить масштаб страницы перед печатью? Или вдруг вы спамер и желаете забросать пользователя кучей рекламы, распечатанной без его согласия? Именно поэтому браузеры не позволяют JavaScript'у принудительно начать печать без явного подтверждения пользователя. Всё, что вы можете сделать в данной ситуации - просто забить.

четверг, 28 февраля 2019 г.

Кроссбраузерная автоматическая печать изображения (решено)

Задача: сделать на сайте так, чтобы графический файл автоматически отправлялся на принтер. Сама печать легко запускается через window.print(), но при этом распечатанный результат получается разного размера из разных браузеров: из IE печатается, как и задумано, на весь лист А4, из Firefox картинка занимает меньше четверти листа, из Opera и Chrome — нечто среднее. Пробовал устанавливать размер картинки через CSS, указывая в качестве единицы измерения дюймы (in) — не помогает. Как сделать, чтобы рисунок печатался на полный лист из любого браузера? UPD: Решил проблему, установив для рисунка width:100% через css media=print


Ответ

Браузеры практически не дают управлять параметрами печати. Для Опреы и Хрома можно указать отступы в CSS: @media print{ @page: {margin: 0%} } Остальные браузеры это игнорируют, подставляют значения, указываемые пользователем (или по дефолту). То же касается колонтитулов - полностью пользовательская настройка. А так печать картинки при выставленных одинаковых параметрах отступов, колонтитулов и галки "по ширине страницы" печатается одинаково. Устанавливайте картинке width:100% в правилах для @media print, дальнейшее будет зависеть от пользователя.