[WPF] Галимый анахронизм печати
От: Baiker  
Дата: 14.11.25 10:50
Оценка:
Речь про PrintDialog и конкретно про PrintVisual(Visual вашКонтрол, string описаниеЗаданияПечати):

Сделали мелкософтовцы "печать контрола" и это замечательно — я побырому применил его в проге и уже было обрадовался, что "задарма" сделал печать сложной формы, но поддых получил откуда не ждали — оказывается, это только называется "печать"! На деле, контрол тупо выводится на "бесконечное полотно печати" и плевать он хотел на настройки принтера, а конкретно — на СТРАНИЦЫ(!!). Т.е. в выходном файле всего одна страница размером с печатаемый контрол — ват зе фак?! Как результат, любые попытки напечатать это "чудо" проваливаются, ибо принтер просто не понимает, что нужно одну страницу "расчленить" на подстраницы.
Зачем тогда называть это "печатью", да ещё и внутри принт диалога, если эта галимая "картинка контрола" вообще никакого отношения к печати не имеет??

От возмущения к вопросам, а точнее одной элементарной задаче: есть контрол, который может быть оч длинный. Нужно его напечатать на физических страницах, соотв. нужны номера страниц и сам контрол должен "разрываться" между страницами. Метод "в лоб" не помог — ну не знают в микрософте, что у страниц тоже есть границы!

Я обдумывал вариант печати в PDF и потом как-то "разрезать" по размерам A4, но готовых утилит для этого не существует.

Конечно же, я не мог не попасть на гуглёжный вариант с DocumentPaginator и FixedPage, но если вы читали этот код, то это полный маразм! НАМ САМИМ предлагают сношаться с контролом, чтобы мы его ручками разбивали на страницы — тупее идеи не придумать! Контролы — чудовищно сложная вещь даже если это просто листбокс, просто невозможно его разбивать какими-то ручными методами. Другими словами, мелкософт опять сделал что-то "на отъявись" — наспех настрочили "вывод на печать", а про главное позабыли — это ПЕЧАТЬ, а не "сбросить картину 5х5 метров в абстрактный принтер".

Господа погромисты, есть какие-нть идеи как это решить? Можно даже коммерческим контролом, но лучше как-то своим кодом.
Re: [WPF] Галимый анахронизм печати
От: BlackEric http://black-eric.lj.ru
Дата: 14.11.25 13:11
Оценка:
Здравствуйте, Baiker, Вы писали:

B>Речь про PrintDialog и конкретно про PrintVisual(Visual вашКонтрол, string описаниеЗаданияПечати):


B>Господа погромисты, есть какие-нть идеи как это решить? Можно даже коммерческим контролом, но лучше как-то своим кодом.


Что в контроле? Изображение? Текст? Текст с изображением, как в документах зачастую?
Универсального решения не встречал.
https://github.com/BlackEric001
Re: [WPF] Галимый анахронизм печати
От: Слава  
Дата: 14.11.25 14:53
Оценка:
Здравствуйте, Baiker, Вы писали:

B>Господа погромисты, есть какие-нть идеи как это решить? Можно даже коммерческим контролом, но лучше как-то своим кодом.


Можно ли отрендерить контрол в картинку?

Если да, то потом можно будет картинку разрезать и разместить на отдельных страницах.
Re: [WPF] Галимый анахронизм печати
От: Pavel Dvorkin Россия  
Дата: 15.11.25 05:39
Оценка:
Здравствуйте, Baiker, Вы писали:

B>Господа погромисты, есть какие-нть идеи как это решить? Можно даже коммерческим контролом, но лучше как-то своим кодом.


Сделать невидимый listbox/ listview, переливать в него порциями и печатать. Возможно, даже невидимый диалог с этим listbox/ listview. На нем можно еще static разместить с номером страницы.
With best regards
Pavel Dvorkin
Отредактировано 15.11.2025 5:44 Pavel Dvorkin . Предыдущая версия .
Re: [WPF] Галимый анахронизм печати
От: Janus Россия  
Дата: 18.11.25 17:32
Оценка:
Здравствуйте, Baiker, Вы писали:



B>Господа погромисты, есть какие-нть идеи как это решить? Можно даже коммерческим контролом, но лучше как-то своим кодом.


Пользуем FastReport , когда надо по богатомоу -> ActiveReports
... Хорошо уметь читать между строк. Это иногда
приносит большую пользу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.