WPF — печать содержимого на той же странице

#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 и распечатать только новое содержимое, я должен убедиться, что он нацелен на ту же страницу и не вставляет разрыв страницы между ними. Целевой принтер, скорее всего, является матричным принтером.