• C#打印


    C#打印(PrintDocument、PrintDialog、PageSetupDialog、PrintPreviewDialog)

      这几天一直在弄C#打印,下面整理过后的打印范例,主要介绍了PrintDocument的主要属性、方法的应用。及打印过程中可能用的到得PrintDialog、PageSetupDialog、PrintPreviewDialog对话框。
    代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Drawing.Printing;

    namespace demo
    {
    public partial class PrintOther : Form
    {

    public PrintOther()
    {
    InitializeComponent();
    }

    //PrintDocument类是实现打印功能的核心,它封装了打印有关的属性、事件、和方法
    PrintDocument printDocument = new PrintDocument();

    private void btnPrint_Click(object sender, EventArgs e)
    {
    //printDocument.PrinterSettings可以获取或设置计算机默认打印相关属性或参数,如:printDocument.PrinterSettings.PrinterName获得默认打印机打印机名称
    //printDocument.DefaultPageSettings //可以获取或设置打印页面参数信息、如是纸张大小,是否横向打印等

    //设置文档名
    printDocument.DocumentName = "处方笺";//设置完后可在打印对话框及队列中显示(默认显示document)

    //设置纸张大小(可以不设置取,取默认设置)
    PaperSize ps = new PaperSize("Your Paper Name", 100, 70);
    ps.RawKind
    = 150; //如果是自定义纸张,就要大于118,(A4值为9,详细纸张类型与值的对照请看http://msdn.microsoft.com/zh-tw/library/system.drawing.printing.papersize.rawkind(v=vs.85).aspx)
    printDocument.DefaultPageSettings.PaperSize = ps;

    //打印开始前
    printDocument.BeginPrint += new PrintEventHandler(printDocument_BeginPrint);
    //打印输出(过程)
    printDocument.PrintPage += new PrintPageEventHandler(printDocument_PrintPage);
    //打印结束
    printDocument.EndPrint += new PrintEventHandler(printDocument_EndPrint);

    //跳出打印对话框,提供打印参数可视化设置,如选择哪个打印机打印此文档等
    PrintDialog pd = new PrintDialog();
    pd.Document
    = printDocument;
    if (DialogResult.OK == pd.ShowDialog()) //如果确认,将会覆盖所有的打印参数设置
    {
    //页面设置对话框(可以不使用,其实PrintDialog对话框已提供页面设置)
    PageSetupDialog psd = new PageSetupDialog();
    psd.Document
    = printDocument;
    if (DialogResult.OK == psd.ShowDialog())
    {
    //打印预览
    PrintPreviewDialog ppd = new PrintPreviewDialog();
    ppd.Document
    = printDocument;
    if (DialogResult.OK == ppd.ShowDialog())
    printDocument.Print();
    //打印
    }
    }
    }

    void printDocument_BeginPrint(object sender, PrintEventArgs e)
    {
    //也可以把一些打印的参数放在此处设置
    }

    void printDocument_PrintPage(object sender, PrintPageEventArgs e)
    {
    //打印啥东东就在这写了
    Graphics g = e.Graphics;
    Brush b
    = new SolidBrush(Color.Black);
    Font titleFont
    = new Font("宋体", 16);
    string title = "五凤街道梅峰社区卫生服务站 处方笺";
    g.DrawString(title, titleFont, b,
    new PointF((e.PageBounds.Width - g.MeasureString(title, titleFont).Width) / 2, 20));

    //e.Cancel//获取或设置是否取消打印
    //e.HasMorePages //为true时,该函数执行完毕后还会重新执行一遍(可用于动态分页)
    }

    void printDocument_EndPrint(object sender, PrintEventArgs e)
    {
    //打印结束后相关操作
    }
    }
    }
    联盟快卖 商人,生意人,待创业人士在此可以共赢互利 期待你的加入 群号:140809277
  • 相关阅读:
    zz目标检测
    zz——Recent Advances on Object Detection in MSRA
    zz2019年主动学习有哪些进展?答案在这三篇论文里
    《动手学深度学习》摘要
    P3157 [CQOI2011]动态逆序对 CDQ分治
    数学基础————长期更新
    BZOJ 3639: Query on a tree VII LCT+set维护子树信息
    3065: 带插入区间K小值 树套树 + 替罪羊树 + 权值线段树
    BZOJ 3637: Query on a tree VI LCT + 子树信息 + 点权转边权
    [BJOI2014]大融合 LCT维护子树信息
  • 原文地址:https://www.cnblogs.com/yexinw/p/2067588.html
Copyright © 2020-2023  润新知