Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET C#使用点阵打印机打印文档速度非常慢_C#_.net_Printing_Printdocument_Dot Matrix - Fatal编程技术网

.NET C#使用点阵打印机打印文档速度非常慢

.NET C#使用点阵打印机打印文档速度非常慢,c#,.net,printing,printdocument,dot-matrix,C#,.net,Printing,Printdocument,Dot Matrix,我的c#应用程序有问题,因为我需要使用点阵打印机“Olivetti PR2 Plus”使用X和Y位置坐标打印,就像VB6一样。问题是,如果字符串的平均长度超过20个字符,则打印机速度非常慢,需要快速打印 我有以下代码用于测试目的,并且有问题 private void btnPrint_Click(object sender, EventArgs e) { Document = new PrintDocument(); Documen

我的c#应用程序有问题,因为我需要使用点阵打印机“Olivetti PR2 Plus”使用X和Y位置坐标打印,就像VB6一样。问题是,如果字符串的平均长度超过20个字符,则打印机速度非常慢,需要快速打印

我有以下代码用于测试目的,并且有问题

private void btnPrint_Click(object sender, EventArgs e)
    {
        Document = new PrintDocument();            
        Document.PrintPage += Document_PrintPage;
        Document.PrinterSettings.PrinterName = ((ICollection)PrinterSettings.InstalledPrinters).OfType<string>().Where(p => p.ToUpper().Contains("OLIVETTI")).First().ToString();        
        Document.Print();
    }

private void Document_PrintPage(object sender, PrintPageEventArgs e)
        {
            e.Graphics.DrawString("asdfasdfasdfasdasdffasdfasdfasdf", new Font("Consolas", 8), Brushes.Black, 20, 0, new StringFormat());
            e.Graphics.DrawString("asdfasdfasdasdaasdfsdfffasdfasdf", new Font("Consolas", 8), Brushes.Black, 20, 10, new StringFormat());
            e.Graphics.DrawString("asdfasdfaasdfsasdfsadfdfasdfasdf", new Font("Consolas", 8), Brushes.Black, 20, 20, new StringFormat());
            e.Graphics.DrawString("asfdasdfsadfasasdfasdfdasdfasdff", new Font("Consolas", 8), Brushes.Black, 20, 30, new StringFormat());
            e.Graphics.DrawString("asfdasdsdafasadfsasdfdasdfasdfff", new Font("Consolas", 8), Brushes.Black, 20, 40, new StringFormat());
            e.Graphics.DrawString("asdfaasdsadfsadffsadfsdassadfdff", new Font("Consolas", 8), Brushes.Black, 20, 50, new StringFormat());
            e.Graphics.DrawString("asfdasdfsdafsadfsadfasasasdfdfdf", new Font("Consolas", 8), Brushes.Black, 20, 60, new StringFormat());
            e.Graphics.DrawString("asdfasadfassadfdfssadfassadfdfdf", new Font("Consolas", 8), Brushes.Black, 20, 70, new StringFormat());
            e.Graphics.DrawString("asfdasadfasadfsdfssadasasdffdfdf", new Font("Consolas", 8), Brushes.Black, 20, 80, new StringFormat());   
        }
private void btnPrint\u单击(对象发送者,事件参数e)
{
文档=新的打印文档();
Document.PrintPage+=Document\u PrintPage;
Document.PrinterSettings.PrinterName=((ICollection)PrinterSettings.InstalledPrinters).of type()。其中(p=>p.ToUpper().包含(“OLIVETTI”)).First().ToString();
Document.Print();
}
私有无效文档_PrintPage(对象发送者,PrintPageEventArgs e)
{
e、 Graphics.DrawString(“asdfasdfasdfasdasdffasdfasdfasdff”,新字体(“Consolas”,8),画笔。黑色,20,0,新StringFormat());
e、 Graphics.DrawString(“asdfasdfasdasdaasdfsdfffasdf”,新字体(“Consolas”,8),笔刷。黑色,20,10,新StringFormat());
e、 Graphics.DrawString(“asdfasdfaasdfsasdfsadffasdfasdf”,新字体(“Consolas”,8),笔刷。黑色,20,20,新StringFormat());
e、 Graphics.DrawString(“asfdasdfsadfasasdfasdfdasdfasdff”,新字体(“Consolas”,8),笔刷。黑色,20,30,新StringFormat());
e、 Graphics.DrawString(“asfdasdafasadfasdfdasdfasdfff”、新字体(“Consolas”,8)、画笔.Black、20、40、新StringFormat());
e、 Graphics.DrawString(“asdfaasdsadfsadfsadfsdfsdassadfdff”,新字体(“Consolas”,8),画笔。黑色,20,50,新StringFormat());
e、 Graphics.DrawString(“asfdasdfsdasadfsadfasasasadfdf”),新字体(“Consolas”,8),画笔。黑色,20,60,新StringFormat();
e、 Graphics.DrawString(“asdfasadfsadfsadfsadfassadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdf;
e、 Graphics.DrawString(“asfdasadfasadfsadasdffdff”,新字体(“Consolas”,8),画笔.Black,20,80,新StringFormat());
}

我无法在原始“DOS”模式下打印,因为要打印的数据源具有与纸张格式匹配的特定坐标。?有什么改进打印机性能的建议吗?

定义“非常慢”…我很久没有使用点阵式打印机了,但一般来说,它们在打印图形时非常慢。如果您知道打印机支持哪种模拟(大多数点阵式打印机支持Epson代码),您甚至可以在文本模式下进行细粒度定位。谷歌是你的朋友!问题是在VB6中,打印机在1秒内快速运行“3行,每行70个字符”。。使用此代码,同一场景需要3或4秒。这是在同一系统上运行的吗?请共享VB6代码,以便与C#代码进行比较。“3行,每行70个字符,最多1秒”听起来像是在文本模式下打印。如果你可以发布一个简短的视频(不需要阅读这些行),打印头和纸张的移动应该可以让你看到它是文本模式还是图形模式。你好!。我发现,如果使用草稿字体“带vb6”打印,即使使用X Y坐标打印,打印机速度也很快,当我将字体更改为任何其他非草稿字体时,打印机速度也很慢。NET“Font”对象适用于当前安装的windows字体,如“TrueType fonts”和其他字体,问题是在VB6中,我可以将FontName设置为“Draft(10 cpi)”,如果windows没有,打印机可以解析字体,但在.NET中,此属性是只读的“get”;并且不允许设置windows没有的任何字体。有没有建议使用.net的打印机默认字体打印?