打印图像

时间:2016-06-17 12:24:02

标签: c# printing

Bubble Form

我正在尝试使用以下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();

此代码(或任何代码)可以控制任何打印机,以便气泡的位置在任何打印机上都是一致的吗?

更新: 表格正在打印,填写,然后由第三方软件扫描和处理,该软件确定哪些气泡已被标记。要使用第三方软件,需要创建一个模板,用于标记气泡位置。当在两台不同的打印机上打印此表格时,气泡的位置不同。上面的代码用于打印到每台打印机。由于气泡位置不同,我想知道代码是否可以在任何打印机上提供一致的气泡位置,或者是否使用特定于每台打印机的尺寸或边距,并且无法通过使用代码来确定?

1 个答案:

答案 0 :(得分:0)

所有打印机在页面上打印内容的位置略有不同,因为进纸机制略有不同,等等。您需要做的是在页面上找到一些您可以识别的内容,在它被识别之后扫描并使用它来校准知道气泡在哪里的软件。

理想情况下,您需要多个人工制品用于校准。例如,识别"标记说明"的左上角。框,以及底部父母/祖父母信息的右下角。

如果您知道气泡是这两个位置之间水平距离的70%,以及垂直位置的30%,则可以精确计算扫描页面的位置。

有意义吗?

编辑:由于您处于等式的打印方面(如下面的+ TaW所示),而不是扫描方面,您可以做的最好的事情就是添加一个' +'对于TIFF的每个角落,在当前打印区域之外(但显然不在可打印区域之外),无论是谁在扫描侧,都可以识别并用于校准,如上所述。