我制作了一个小型的c#winforms程序,其中包括打印条形码。在某些运行的客户端计算机上,其他一些用于打印条形码的软件会覆盖我打印条形码的设置,并且只会调整条形码的大小。
如果我只更改了该机器的代码,它可以重新定位图像(使其缩小),或者将图像拉得太宽以至于切断三分之一。目前我只使用打印设置将边距设置为0并在打印对话框中将纸张模式设置为横向,并且图像尺寸在打印过程中是固定的(我使用了常量)。下面是用户单击打印按钮时的代码,以及在其外部定义的两个常量。
const int barcodeX = 570;
const int barcodeY = 135;
private void Print_Click(object sender, EventArgs e)
{
DocPrint.DocumentName = "Document";
elements = 0;
PrintDialog.Document = DocumentDrucker;
DocPrint.DefaultPageSettings.Landscape = true;
DocPrint.DefaultPageSettings.Margins.Top = 0;
DocPrint.DefaultPageSettings.Margins.Left = 0;
DocPrint.DefaultPageSettings.Margins.Right = 0;
DocPrint.DefaultPageSettings.Margins.Bottom = 0;
//DocumentDrucker.OriginAtMargins = false;
if (PrintDialog.ShowDialog() == DialogResult.OK)
DocPrint.Print();
}
在打印过程中编码和打印条形码的行。条形码是条形码放置在纸上的位置。
b.Encode(TYPE.CODE128A, "SBD" + currentItem.Text.Substring(0, 3) + currentItem.Text.Substring(4), Color.Black, Color.Transparent, barcodeX, barcodeY);
graphic.DrawImage(b.EncodedImage, barcodePoint);
程序在任何其他情况下运行正常,所以我发现了问题,我只是不知道如何绕过其他软件的设置。我已经重新安装了打印机的驱动程序(没有成功),以及在同一台计算机上以不同的用户身份登录,这使我的程序工作。所以它与安装在它上面的软件有关,我只是不知道是什么。 起初我认为这是驱动程序和操作系统的问题,但我在其他计算机上尝试过,它也运行良好。该问题仅存在于使用该软件的计算机上。
有没有办法让我的程序强制它为条形码图像打印设置,因为机器上安装的软件总是使用它自己的设置?或者确保我的代码中的设置不会更改?
卸载软件不是一种选择,因为它用于其他过程。
编辑:我从我的用户登录(没有软件)和目标机器用户(都在同一台机器上)运行程序。两种情况下的设置都相同,唯一不同的是在目标机器上安装了软件。有哪些方法可以确保我的设置被强制执行,而不是X程序覆盖它们?