#wpf #printing
#wpf #печать
Вопрос:
У меня есть требование распечатать содержимое формы WPF при нажатии кнопки сохранения. Содержимое представляет собой обычный текст и будет представлять собой пары имя-значение в каждой строке. Мне не нужны разрывы страниц при последовательных сохранениях.
Я опробовал образцы для PrintDialog, FlowDocument и FixedDocument и не смог избежать разрыва страницы. Есть ли какие-либо конкретные настройки, которые мне не хватает? Есть ли альтернатива PrintDialog?
Код:
Paragraph myParagraph = new Paragraph();
myParagraph.Margin = new Thickness(0);
**myParagraph.BreakPageBefore = false;**
foreach (string line in textToPrint.Split(new string[] { Environment.NewLine }, StringSplitOptions.None))
{
myParagraph.Inlines.Add(new Run(line));
}
flowDocument.Blocks.Add(myParagraph);
DocumentPaginator paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator;
printDialog.PrintDocument(paginator, "Test Page");
Ответ №1:
Насколько я знаю, новое задание на печать (документ) начинается с новой страницы. Если вы не хотите разрывов страниц, соберите все значения, которые вы хотите распечатать, а затем распечатайте их.
Комментарии:
1. Если вы не хотите разрывов страниц, соберите все значения, которые вы хотите распечатать, а затем распечатайте их. Должен ли я использовать Win32 API для этого или это возможно в самом C # / WPF?
2. На данный момент вы создаете документ каждый раз, когда пользователь нажимает кнопку. Вместо этого создайте один документ и добавьте данные в этот документ. Когда все данные будут добавлены, распечатайте документ.
3. Мне нужно печатать после каждого сохранения. Даже если я попытаюсь повторно использовать объект Document и распечатать только новое содержимое, я должен убедиться, что он нацелен на ту же страницу и не вставляет разрыв страницы между ними. Целевой принтер, скорее всего, является матричным принтером.