0

我正在开发 C# 应用程序。在这个 C# 程序中,我想添加打印按钮,以便用户可以使用此按钮打印他们想要的任何文档。我设法通过阅读它来打印一个txt文件。但是如果我选择一个 pdf 文件,程序会在结果中打印一些错误代码。

private void printButton_Click(object sender, EventArgs e)
{
    try
    {
        streamToPrint = new StreamReader("C:\\test.txt");
        try
        {
            printFont = new Font("Arial", 10);
            PrintDocument pd = new PrintDocument();
            pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
            pd.Print();
        }
        finally
        {
            streamToPrint.Close();
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}


private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
    float linesPerPage = 0;
    float yPos = 0;
    int count = 0;
    float leftMargin = ev.MarginBounds.Left;
    float topMargin = ev.MarginBounds.Top;
    string line = null;

    linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics);

    while (count < linesPerPage && ((line = streamToPrint.ReadLine()) != null))
    {
        yPos = topMargin + (count *
           printFont.GetHeight(ev.Graphics));
        ev.Graphics.DrawString(line, printFont, Brushes.Black,
           leftMargin, yPos, new StringFormat());
        count++;
    }

    if (line != null)
        ev.HasMorePages = true;
    else
        ev.HasMorePages = false;
}

除此之外,还有什么方法可以在文档上打开 ctrl-p 菜单(打印选项)?然后用户可以选择他/她想要的任何打印机。

我会很感激你的帮助。

致以我的问候...

4

2 回答 2

1

您不能逐行阅读 pdf 文件。PDF 是二进制格式,而不是文本格式。要清除这一点,请尝试在记事本(或您喜欢的文本编辑器)中打开 PDF 文件。无论如何,您都可以使用众多可用库之一来完成此操作,或者编写自己的 PDF 解释器。我会推荐可用的库 iTextSharp ( http://itextpdf.com/ )

于 2013-08-21T09:09:21.057 回答
1

有一个PrintDialog类应该提供这些选项。但是我不确定这会让你走得更远,因为 Romano 提出了没有 iTextSharp 或 PDFSharp 之类的库就无法阅读 PDF 的观点。

于 2013-08-21T09:15:49.343 回答