Я пытаюсь продолжить печать каждого документа на той же странице.
Позвольте мне объяснить ... У меня есть текстовый файл, который обновляется каждые 5 минут, и этот файл содержит одну строку со значениями, разделенными запятыми.
Я читаю и анализирую этот файл каждые 5 минут, а затем использую PrintDocument для печати строки в файле. Проблема в том, что каждый раз, когда я звоню
pd.Print();
Он печатает мою строку на новой странице ..
Я ищу способ продолжить печать на следующей строке бумаги, чтобы избежать макулатуры. Или, другими словами, способ напечатать одну строку на принтере, не наматывая бумагу на новую страницу.
Я смотрел на реализацию Microsoft PrintDocument в
https://docs.microsoft.com/en-us/dotnet/api/system.drawing.printing.printdocument.printpage?view=netframework-4.7.2
Но я не вижу способа манипулирования или события, который я могу выслушать, чтобы принтер не наматывал бумагу на новую страницу.
Это моя функция для печати страницы, модифицированная для использования StringReader
private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
float linesPerPage = 0;
float yPos = 0;
int count = 0;
float leftMargin = ev.MarginBounds.Left;
float topMargin = ev.MarginBounds.Top;
string line = null;
// Calculate the number of lines per page.
linesPerPage = ev.MarginBounds.Height /
printFont.GetHeight(ev.Graphics);
StringReader reader = new StringReader(reportHeader.ToString());
// Print each line of the file.
while (count < linesPerPage &&
((line = reader.ReadLine()) != null))
{
yPos = topMargin + (count *
printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString(line, printFont, Brushes.Black,
leftMargin, yPos, new StringFormat());
count++;
}
//ev.Cancel = true;
//ev.HasMorePages = false;
// If more lines exist, print another page.
if (line != null)
ev.HasMorePages = true;
else
ev.HasMorePages = false;
}
Предположим, что _ пустая строка
Фактические результаты после вызова pd.print ():
1 2 3 4 5 6
затем, когда я снова вызываю pd.print (), я получаю результаты новой страницы:
7 8 9 3 2 1
Ожидаемые результаты:
1 2 3 4 5 6
7 8 9 3 2 1
(затем я хочу, чтобы курсор принтера остановился здесь в ожидании следующего выполнения команды печати для печати следующих значений).