我正在尝试使用以下C#代码打印此图像:
pd2.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);
pd2.OriginAtMargins = true;
pd2.DefaultPageSettings.Landscape = false;
pd2.PrintPage += (sender, args) =>
{
System.Drawing.Image i = System.Drawing.Image.FromFile("C:\\6\\BubbleForm.tif");
System.Drawing.Rectangle m = args.MarginBounds;
if ((double)i.Width / (double)i.Height > (double)m.Width / (double)m.Height) // image is wider
{
m.Height = (int)((double)i.Height / (double)i.Width * (double)m.Width);
}
else
{
m.Width = (int)((double)i.Width / (double)i.Height * (double)m.Height);
}
args.Graphics.DrawImage(i, m);
};
pd2.Print();
此代码(或任何代码)可以控制任何打印机,以便气泡的位置在任何打印机上都是一致的吗?
更新: 表格正在打印,填写,然后由第三方软件扫描和处理,该软件确定哪些气泡已被标记。要使用第三方软件,需要创建一个模板,用于标记气泡位置。当在两台不同的打印机上打印此表格时,气泡的位置不同。上面的代码用于打印到每台打印机。由于气泡位置不同,我想知道代码是否可以在任何打印机上提供一致的气泡位置,或者是否使用特定于每台打印机的尺寸或边距,并且无法通过使用代码来确定?
答案 0 :(得分:0)
所有打印机在页面上打印内容的位置略有不同,因为进纸机制略有不同,等等。您需要做的是在页面上找到一些您可以识别的内容,在它被识别之后扫描并使用它来校准知道气泡在哪里的软件。
理想情况下,您需要多个人工制品用于校准。例如,识别"标记说明"的左上角。框,以及底部父母/祖父母信息的右下角。
如果您知道气泡是这两个位置之间水平距离的70%,以及垂直位置的30%,则可以精确计算扫描页面的位置。
有意义吗?
编辑:由于您处于等式的打印方面(如下面的+ TaW所示),而不是扫描方面,您可以做的最好的事情就是添加一个' +'对于TIFF的每个角落,在当前打印区域之外(但显然不在可打印区域之外),无论是谁在扫描侧,都可以识别并用于校准,如上所述。