打印保存在C#中的文件

时间:2017-12-06 01:21:08

标签: c# asp.net winforms printing

我正在尝试以winform形式打印,事实证明,当我打印文档时,我得到了空白页。 这是我尝试打印的代码:

    private PrintDocument printDocument1 = new PrintDocument();
    private string stringToPrint;
    public Form1()
    {
        InitializeComponent();
    }


    private void button1_Click(object sender, EventArgs e)
    {
        ReadPrint();
        printDocument1.Print();
    }

    private void ReadPrint()
    {
        string docName = "ejemplo.pdf";
        string docPath = @"C:\dir1\";
        printDocument1.DocumentName = docName;
        using (FileStream stream = new FileStream(docPath + docName, FileMode.Open, FileAccess.Read))
        using (StreamReader reader = new StreamReader(stream))
        {
            stringToPrint = reader.ReadToEnd();
        }
    }

    private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
    {
        int charactersOnPage = 0;
        int linesPerPage = 0;


        e.Graphics.MeasureString(stringToPrint, this.Font,
            e.MarginBounds.Size, StringFormat.GenericTypographic,
            out charactersOnPage, out linesPerPage);


        e.Graphics.DrawString(stringToPrint, this.Font, Brushes.Black,
            e.MarginBounds, StringFormat.GenericTypographic);


        stringToPrint = stringToPrint.Substring(charactersOnPage);

        e.HasMorePages = (stringToPrint.Length > 0);
    }

    private void printButton_Click(object sender, EventArgs e)
    {
        LeerArchivo();
        printDocument1.Print();
    }

我想知道是否有办法纠正它或打印文件的其他方式?或者一些示例代码? 问候

在stringToPrint中: enter image description here

2 个答案:

答案 0 :(得分:1)

Vb.net有一个PrintForm方法,但C#没有内置的方法来打印Windows窗体。

在运行时在C#.net中打印Windows窗体。基本概念涉及在运行时以jpeg格式捕获表单的屏幕图像,并在打印按钮单击等事件上打印该图像。

print

答案 1 :(得分:0)

您确定stringToPrint不为空或为空吗?我使用相同的东西,它完美地运作。您应该尝试添加打印PrintPreviewDialog,以防您要检查要打印的文档是否为空白。首先检查你的变量。

e.Graphics.DrawString("SomeString", new Font("Arial", 12, FontStyle.Bold), Brushes.Black, new Point(580, 510));

e.Graphics.DrawString("SomeString1", new Font("Arial", 12, FontStyle.Bold), Brushes.Black, new Point(700, 510));

对于参数new Point(),它是通过x和y坐标显示文本的位置。