用C#格式化打印文档

时间:2014-02-17 09:01:44

标签: c# printing

我对c#很陌生,需要帮助制作一份打印文件。

我已经设法通过此代码与打印机通信了:

private void Print(string printer)
    {
        PrintDocument PrintDoc = new PrintDocument();

        PrintDoc.PrinterSettings.PrinterName = printer;

        PrintDoc.PrintPage += new PrintPageEventHandler(PrintPage);
        PrintDoc.Print();
    }

    void PrintPage(object sender, PrintPageEventArgs e)
    {
        e.Graphics.DrawLine(new Pen(Color.Black), new Point(0, 0), new Point(100, 100));
        e.Graphics.DrawString("Hello World", new Font("Times New Roman", 12), new SolidBrush(Color.Black), new Point(45, 45));

    }

打印出我的“hello world”字符串。显然,PrintPage方法是我在网上找到的代码。 可悲的是,我找不到方法

a)设置我打印的纸张尺寸的格式(138mm x 99mm横向格式)

b)告诉打印机准确打印文本的位置。

该论文是一份预先印制的表格,我必须在特定领域写下我的文字。

所以我正在寻找一种方法来为我的打印机提供一个格式化文档,如:

<field1>
    <x> 2cm </x>
    <y> 1cm </y>
    <text> textfield1 </text>
</field1>
<field2>
     ....

我找不到有关如何做到这一点的信息。所以,如果有人能告诉我如何做到这一点或者有一个很好的教程链接,我会非常感谢

1 个答案:

答案 0 :(得分:2)

设置纸张尺寸

printDocument.DefaultPageSettings.PaperSize = new PaperSize("Custom Name", width, height);
printDocument.DefaultPageSettings.Landscape = true;

宽度和高度以百分之一英寸

请参阅this中的教程,以便在预先打印的纸张上打印文本。

另外,为了避免在实验过程中造成纸张浪费,请将预印纸作为图像进行扫描,并在预览期间将其设置为PrintPageHanlder中的背景。

void printDocument_PrintPage(object sender, PrintPageEventArgs e)
{
    if (printDocument.PrintController.IsPreview)
    {
        Image image = Image.FromFile("ScannedImagePath");
        e.Graphics.DrawImage(image,0,0)
    }
    // print other text here after drawing the background
}