zoukankan      html  css  js  c++  java
  • Spread for Windows Forms高级主题(7)自定义打印的外观

    表单打印的多个部分都可以进行自定义,大多数的自定义选项存在于PrintInfo对象中。大多数打印选项是在PrintInfo对象上进行设置,并在表单级别上应用。当你执行打印操作时,你将一个特定的表单发送给使用这些设置的打印机。如果你想为不同的表单使用不同的打印设置,那么你可能需要重置PrintInfo对象,然后在表单打印的间隔内做必要的修改。

    深入理解打印选项

    你可以通过设置PrintInfo对象的 属性,并将表单的PrintInfo属性值设置为该对象,来自定义打印设置。PrintInfo对象提供了以下属性用来自定义打印:

    属性

    描述

    AbortMessage

    获取或设置退出对话框显示的信息。

    BestFitCols

    获取或设置列宽是否为满足打印最长字符串的宽度而调整。

    BestFitRows

    获取或设置行高是否为满足打印最高字符串的高度而调整。

    Centering

    获取或设置打印输出是否居中。

    Colors

    获取或设置可在自定义页眉或页脚文本中使用的颜色列表。

    ColStart和 ColEnd

    用来打印表单的一部分。

    FirstPageNumber

    获取或设置打印在首页上的页码。

    Footer

    为打印页面提供页脚。

    Header

    为打印的页面提供页眉。

    Images

    获取或设置可在自定义页眉或页脚中使用的图片列表。

    JobName

    获取或设置打印作业的名称。

    Margin

    获取或设置打印的页面空白。

    Opacity

    获取或设置打印表单时所使用的不透明度; 它可以用来首先打印一个水印,然后再打印表单的内容。

    Orientation

    获取或设置打印时的页面方向。

    PageStart和 PageEnd

    用来打印一个页面区域。

    PageOrder

    获取或设置页面打印的顺序。

    PaperSize

    获取或设置所使用的纸张大小。

    PaperSource

    获取或设置所使用的纸张来源。

    Preview

    用来提供打印预览。

    Printer

    获取或设置用来打印的打印机名称。

    PrintNotes

    获取或设置是否打印单元格注释。

    PrintShapes

    获取或设置是否打印浮动对象。

    PrintType

    获取或设置需要打印的内容。

    RepeatColStart和 RepeatColEnd

    获取或设置是否在每一个页面上打印相同的列集。

    RepeatRowStart 和 RepeatRowEnd

    获取或设置是否在每一个页面上打印相同的行集。

    RowStart和 RowEnd

    用来打印表单的一部分。

    ShowBorder

    获取或设置是否在表单的四周打印边界。

    ShowColor

    获取或设置是否打印在屏幕上出现的颜色。

    ShowColumnHeader 和 ShowRowHeader

    获取或设置是否打印列标题和行标题。

    ShowGrid

    获取或设置是否打印表单的网格线。

    ShowPrintDialog

    获取或设置打印前是否显示打印对话框。

    ShowShadows

    获取或设置是否打印标题阴影。

    SmartPrintPagesTall

    获取或设置打印的页高。

    SmartPrintPagesWide

    获取或设置打印的页宽。

    SmartPrintRules

    用来设置打印优化的规则。

    UseMax

    获取或设置是否只打印包含数据的行。

    UseSmartPrint

    用来开启打印优化的规则。

    ZoomFactor

    获取或设置打印页面时使用的缩放因子。

    示例代码创建了一个PrintInfo对象,并设置属性指定不打印网格线或行标题,并且只打印包含数据的单元格。

    //创建PrintInfo对象并设置属性。
    
    FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();
    
    printset.ShowGrid = false;
    
    printset.ShowRowHeader = FarPoint.Win.Spread.PrintHeader.Hide;
    
    printset.UseMax = true;
    
    //为第一个表单设置PrintInfo属性。
    
    fpSpread1.Sheets[0].PrintInfo = printset;
    
    //打印表单。
    
    fpSpread1.PrintSheet(0);

    自定义打印作业设置

    如果你没有指定其他打印机的话,表单会使用你的Windows系统环境中当前的默认打印机进行打印。你可以在任意支持Windows的打印机上打印表单。

    你可以自定义的打印作业设置项包括打印机、纸张来源、以及纸张大小。相对应的,可以设置PrintInfo对象中的Printer,PaperSource,或PaperSize属性。

    下面的示例代码从一个复选框中选择了纸张来源,并在打印所有表单前设置了纸张的大小。

    private void Form1_Load(object sender, System.EventArgs e) 
    
    {
    
    int i;
    
    System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
    
    for (i = 0; i <= ps.PaperSources.Count - 1; i++)
    
    { 
    
    comboBox1.Items.Add(ps.PaperSources[i].SourceName);
    
    } 
    
    comboBox1.Text = ps.PaperSources[0].SourceName;
    
    }
    
    private void button1_Click(object sender, System.EventArgs e 
    
    { 
    
    FarPoint.Win.Spread.PrintInfo pi = new FarPoint.Win.Spread.PrintInfo(); 
    
    System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings(); 
    
    pi.PaperSize = new System.Drawing.Printing.PaperSize("Letter", 600, 300); 
    
    pi.PaperSource = ps.PaperSources[comboBox1.SelectedIndex]; 
    
    fpSpread1.Sheets[0].PrintInfo = pi; 
    
    fpSpread1.PrintSheet(-1); 
    
    } 

    自定义打印页眉或页脚

    你可以在打印页面上显示页眉和页脚。使用PrintInfo类的 Header属性和 Footer属性,可能包含特殊的控制指令,你可以指定文本和变量,如页数,也可以指定字体的设置。与字体相关的指令以"f"开头。

    下面的表中列出了可插入到页眉和页脚中的控制指令。

    控制字符

    完整的命令

    打印页面的页眉或页脚的行为

    /

    /

    插入正斜杠字符(/)

    /c

    /c

    调整项目居中

    /cl

    /cl"n"

    设置文本的字体颜色,使用以0为基准的颜色索引,n,在引号中(n可以是0或更大); 请参考Colors属性。

    /dl

    /dl

    使用长格式,插入日期

    /ds

    /ds

    使用短格式,插入日期

    /f

    /f"n"

    重新调用先前保存的字体设置(查看表中的/fs),使用以0为基准的索引,n,在引号中(n可以是0或更大)。

    /fb

    /fb0

    关闭加粗字体类型

     

    /fb1

    打开加粗字体类型

    /fi

    /fi0

    关闭斜体字体类型

     

    /fi1

    打开斜体字体类型

    /fk

    /fk0

    关闭删除线

     

    /fk1

    打开删除线

    /fn

    /fn"name"

    使用引号中字体的名称,设置字体的名称。

    /fs

    /fs"n"

    保存字体设置以便重复使用,使用以0为基准的字体设置索引,n,在引号中(查看表中的/f)

    /fu

    /fu0

    关闭下划线

     

    /fu1

    打开下划线

    /fz

    /fz"n"

    设置字体的大小

    /g

    /g"n"

    插入一张图形(图片),以0为基准的图片索引,n,在引号中(n可以为0或更大) 请参考Images属性。

    /l

    /l

    左对齐该项目(这是字母l或L,与Left等价)

    /n

    /n

    插入一个新行

    /p

    /p

    插入页码

    /pc

    /pc

    插入页数(打印作业中的总页面数)

    /r

    /r

    右对齐该项目

    /tl

    /tl

    使用长格式插入时间

    /ts

    /ts

    使用短格式插入时间

    如果你使用了多个控制字符,不要在字符之间留空格。字符可以为小写或大写格式; 为了简单起见,显示在这里的所有命令和示例都使用小写格式。

    打印表单(运行PrintSheet 方法)前定义页眉和页脚(设置 Header 和 Footer 属性)。

    如果颜色已经在Colors属性中进行了预定义,那么你可以从颜色列表中为文本指定一个颜色。

    如果图片已经在Images属性中进行了预定义,你可以指定一个图片。

    你可以添加文本包括页数和总的打印页数。

    你可以保存页眉或页脚中的字体设置,以便重复使用。

    这个是下面代码运行的结果。

    image

    下面的示例代码打印带有指定页眉和页脚文本的表单:

    //创建PrintInfo对象并设置属性。
    
    FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();
    
    printset.Colors = new Color[] {Color.Green, Color.Yellow, Color.Gold, Color.Indigo, Color.Brown}; 
    
    printset.Images = new Image[] {Image.FromFile("C:\\images\\point.jpg"), Image.FromFile("C:\\images\\logo.gif"), Image.FromFile("C:\\images\\icon.jpg")}; 
    
    printset.Header = ""/fn\"Book Antiqua\" /fz\"14\" Print job for FarPoint Inc./n "; 
    
    printset.Footer = "/g\"1\"/r/cl\"4\"This is page /p of /pc"; 
    
    //为第一个表单设置PrintInfo属性。
    
    fpSpread1.Sheets[0].PrintInfo = printset;
    
    //打印表单。
    
    fpSpread1.PrintSheet(0);

    在打印页面上循环打印行或列

    你可以指定出现在每一个打印页顶部的行或左边的列。使用PrintInfo对象的RepeatRowStart,RepeatRowEnd,RepeatColStart,和RepeatColEnd属性。

    下面的示例代码设置了循环选项,并使用了预览对话框。

    FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();
    
    printset.RepeatColStart = 0;
    
    printset.RepeatColEnd = 2;
    
    printset.RepeatRowStart = 0;
    
    printset.RepeatRowEnd = 2;
    
    printset.Preview = true;
    
    fpSpread1.Sheets[0].PrintInfo = printset;
    
    fpSpread1.PrintSheet(0);

    添加分页符

    你可以在指定的行或列前添加强制分页符。分页符不会在屏幕上显示,但是在打印表单时会强制分页。列的分页符位于指定列的左边。行的分页符位于指定行的上方。要添加或设置分页符,使用SetRowPageBreak 和SetColumnPageBreak方法。

    你也可以检索到表单中位于分页符后的下一行或列。要查看已经设置的分页符,使用GetRowPageBreaks方法返回行分页符的数量,使用GetColumnPageBreaks方法返回列分页符的数量。

    你可以使用GetPrintPageCount方法 计算表单的打印页数。

    下面的示例代码设置了行分页符,并为行分页符返回了总行数。

    //为窗体的Load事件添加如下代码。
    
    FarPoint.Win.Spread.PrintInfo pi = new FarPoint.Win.Spread.PrintInfo();
    
    pi.UseMax =false;
    
    fpSpread1.Sheets[0].PrintInfo = pi;
    
    fpSpread1.Sheets[0].SetRowPageBreak(5,true);
    
    //为按钮的Click事件添加如下代码。
    
    int []i;
    
    i = fpSpread1.GetRowPageBreaks(0);
    
    foreach (object o in i)
    
    {
    
    listBox1.Items.Add(o);
    
    }

    为打印页面添加水印

    在打印表单时,你可以打印一张背景图片或水印。打印时,触发PrintBackground事件,然后在该事件中指定背景图片,并使用PrintInfo.Opacity属性设置不透明度; 打印表单时,如果不透明度最高(透明度最低),则没有水印;而如果不透明度低(透明度高)时,则会显示水印。

    下面的代码示例展示了如何打印水印。

    private void fpSpread1_PrintBackground(object sender, FarPoint.Win.Spread.PrintBackgroundEventArgs e) 
    
    {
    
    FarPoint.Win.Picture pic = new FarPoint.Win.Picture(System.Drawing.Image.FromFile("C:\\Spread70\\Samples\\Files\\cover.jpg"), FarPoint.Win.RenderStyle.Normal); 
    
    pic.AlignHorz = FarPoint.Win.HorizontalAlignment.Left;
    
    pic.AlignVert = FarPoint.Win.VerticalAlignment.Top;
    
    pic.Paint(e.Graphics, e.SheetRectangle);
    
    }
    
    private void button1_Click(object sender, System.EventArgs e) 
    
    {
    
    FarPoint.Win.Spread.PrintInfo pi = new FarPoint.Win.Spread.PrintInfo();
    
    pi.Opacity = 100;
    
    fpSpread1.ActiveSheet.PrintInfo = pi;
    
    fpSpread1.PrintSheet(0);
    
    }

    Spread for Windows Forms 5.0 中文版下载地址

    附:Spread for Windows Forms高级主题系列文章

    Spread for Windows Forms高级主题(1)---底层模型

    Spread for Windows Forms高级主题(2)---理解单元格类型

    Spread for Windows Forms高级主题(3)---理解单元格的编辑模式

    Spread for Windows Forms高级主题(4)---自定义用户交互

    Spread for Windows Forms高级主题(5)---数据处理

    Spread for Windows Forms高级主题(6)---数据绑定管理

    相关阅读:

    Spread for Windows Forms 7新功能使用指南

    Spread Studio 10.0v1 发布

    SpreadJS 10.0v1 发布



    本文是由葡萄城技术开发团队发布,转载请注明出处:葡萄城官网


  • 相关阅读:
    swt 更新主UI线程
    java中 快捷键输入System.out.println();
    原型设计工具
    JAVA笔记
    转:java读取配置文件的几种方法
    Server Message Block
    安全标识符
    BitLocker:如何启用网络解锁
    imageX.exe
    组策略首选项
  • 原文地址:https://www.cnblogs.com/powertoolsteam/p/2149009.html
Copyright © 2011-2022 走看看