加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在c#中打印完整尺寸的图像

发布时间:2020-12-15 21:45:28 所属栏目:百科 来源:网络整理
导读:我想用C#打印图像.它是由Adobe Acrobat从PDF创建的完整8.5×11大小的tiff.当我使用下面的代码用C#打印时,它会垂直打印,但不能水平打印,它会被推过半英寸.我将图像的原点设置为0,0.我错过了什么吗? private FileInfo _sourceFile; public void Print(FileInf
我想用C#打印图像.它是由Adobe Acrobat从PDF创建的完整8.5×11大小的tiff.当我使用下面的代码用C#打印时,它会垂直打印,但不能水平打印,它会被推过半英寸.我将图像的原点设置为0,0.我错过了什么吗?

private FileInfo _sourceFile;
    public void Print(FileInfo doc,string printer,int tray)
    {
        _sourceFile = doc;
        PrintDocument pd = new PrintDocument();
        pd.PrinterSettings.PrinterName = printer;
        pd.DocumentName = _sourceFile.FullName;
        using (Image img = Image.FromFile(_sourceFile.FullName)) {
            if (img.Width > img.Height) {
                pd.DefaultPageSettings.Landscape = true;
            }
        }
        pd.PrintPage += PrintPage;
        foreach (PaperSource ps in pd.PrinterSettings.PaperSources) {
            if (ps.RawKind == tray) {
                pd.DefaultPageSettings.PaperSource = ps;
            }
        }
        pd.Print();
    }

    private void PrintPage(object o,PrintPageEventArgs e)
    {
        using (System.Drawing.Image img = System.Drawing.Image.FromFile(_sourceFile.FullName)) {
            Point loc = new Point(0,0);
            e.Graphics.DrawImage(img,loc);
        }
    }

解决方法

请查看下面的代码,以获得一个很好的示例,此代码来自以下链接
Print Image in C#

private void PrintImage()
        {
            PrintDocument pd = new PrintDocument();

            pd.DefaultPageSettings.Margins = new Margins(0,0);
            pd.OriginAtMargins = false;
            pd.DefaultPageSettings.Landscape = true;

            pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);


            printPreviewDialog1.Document = pd;
            printPreviewDialog1.ShowDialog();

            //pd.Print();
        }

        void pd_PrintPage(object sender,PrintPageEventArgs e)
        {
            double cmToUnits = 100 / 2.54;
            e.Graphics.DrawImage(bmIm,100,1000,(float)(15 * cmToUnits),(float)(10 * cmToUnits));
        }

        private void button5_Click(object sender,EventArgs e)
        {
            PrintImage();
        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读