【问题标题】:Print a file saved in C #打印保存在 C# 中的文件
【发布时间】:2017-12-06 01:21:08
【问题描述】:

我正在尝试在 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();
    }

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

在字符串打印中:

【问题讨论】:

  • 您正在尝试将 PDF 数据(二进制)加载到字符串中。那样不行。
  • @JoelCoehoorn,是的,一个pdf文件,那么,对于这些情况该怎么办?

标签: c# asp.net winforms printing


【解决方案1】:

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

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

print

【讨论】:

    【解决方案2】:

    您确定 stringToPrint 不为空或 null 吗?我正在使用相同的东西,并且效果很好。如果您想检查要打印的文档是否为空白,您应该尝试添加打印 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 坐标出现的位置。

    【讨论】:

    • 编辑问题,stringToPrint根据照片有数据,复制代码在google上找。 FileAccess.Read 添加到其中的差异,因为我收到了我没有权限访问路由的错误
    猜你喜欢
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    相关资源
    最近更新 更多