我正在尝试以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();
}
我想知道是否有办法纠正它或打印文件的其他方式?或者一些示例代码? 问候
答案 0 :(得分:1)
Vb.net有一个PrintForm方法,但C#没有内置的方法来打印Windows窗体。
在运行时在C#.net中打印Windows窗体。基本概念涉及在运行时以jpeg格式捕获表单的屏幕图像,并在打印按钮单击等事件上打印该图像。
答案 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坐标显示文本的位置。