继续使用PrintDocument或推荐的库在同一页面上打印

时间:2019-03-31 00:26:25

标签: c# .net printdocument

我正在尝试继续在同一页面上打印每个文档。

让我解释一下...我有一个每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 (然后我想让打印机光标停在这里,等待下一个打印命令执行以打印下一个值)。

0 个答案:

没有答案