天天看點

Spread for Windows Forms進階主題(7)---自定義列印的外觀

表單列印的多個部分都可以進行自定義,大多數的自定義選項存在于PrintInfo對象中。大多數列印選項是在PrintInfo對象上進行設定,并在表單級别上應用。當你執行列印操作時,你将一個特定的表單發送給使用這些設定的列印機。如果你想為不同的表單使用不同的列印設定,那麼你可能需要重置PrintInfo對象,然後在表單列印的間隔内做必要的修改。

深入了解列印選項

你可以通過設定PrintInfo對象的 屬性,并将表單的PrintInfo屬性值設定為該對象,來自定義列印設定。PrintInfo對象提供了以下屬性用來自定義列印:

<b>屬性</b>

<b>描述</b>

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 &amp;lt;= 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();  

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"開頭。

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

<b>控制字元</b>

<b>完整的指令</b>

<b>列印頁面的頁眉或頁腳的行為</b><b></b>

/

插入正斜杠字元(/)

/c

調整項目居中

/cl

/cl"n"

設定文本的字型顔色,使用以0為基準的顔色索引,n,在引号中(n可以是0或更大); 請參考Colors屬性。

/dl

使用長格式,插入日期

/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,與Left等價)

/n

插入一個新行

/p

插入頁碼

/pc

插入頁數(列印作業中的總頁面數)

/r

右對齊該項目

/tl

使用長格式插入時間

/ts

使用短格式插入時間

如果你使用了多個控制字元,不要在字元之間留白格。字元可以為小寫或大寫格式; 為了簡單起見,顯示在這裡的所有指令和示例都使用小寫格式。

列印表單(運作PrintSheet 方法)前定義頁眉和頁腳(設定 Header 和 Footer 屬性)。

如果顔色已經在Colors屬性中進行了預定義,那麼你可以從顔色清單中為文本指定一個顔色。

如果圖檔已經在Images屬性中進行了預定義,你可以指定一個圖檔。

你可以添加文本包括頁數和總的列印頁數。

你可以儲存頁眉或頁腳中的字型設定,以便重複使用。

這個是下面代碼運作的結果。

<a href="http://powertoolsteam.blog.51cto.com/attachment/201108/22/2369428_1313982013lmLM.png"></a>

下面的示例代碼列印帶有指定頁眉和頁腳文本的表單:

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對象的RepeatRowStart,RepeatRowEnd,RepeatColStart,和RepeatColEnd屬性。

下面的示例代碼設定了循環選項,并使用了預覽對話框。

printset.RepeatColStart = 0;  

printset.RepeatColEnd = 2;  

printset.RepeatRowStart = 0;  

printset.RepeatRowEnd = 2;  

printset.Preview = true;  

fpSpread1.Sheets[0].PrintInfo = printset;  

添加分頁符

你可以在指定的行或列前添加強制分頁符。分頁符不會在螢幕上顯示,但是在列印表單時會強制分頁。列的分頁符位于指定列的左邊。行的分頁符位于指定行的上方。要添加或設定分頁符,使用SetRowPageBreak 和SetColumnPageBreak方法。

你也可以檢索到表單中位于分頁符後的下一行或列。要檢視已經設定的分頁符,使用GetRowPageBreaks方法傳回行分頁符的數量,使用GetColumnPageBreaks方法傳回列分頁符的數量。

你可以使用GetPrintPageCount方法 計算表單的列印頁數。

下面的示例代碼設定了行分頁符,并為行分頁符傳回了總行數。

//為窗體的Load事件添加如下代碼。  

pi.UseMax =false;  

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);  

pi.Opacity = 100;  

fpSpread1.ActiveSheet.PrintInfo = pi;  

fpSpread1.PrintSheet(0);  

 本文轉自 powertoolsteam 51CTO部落格,原文連結:http://blog.51cto.com/powertoolsteam/645955,如需轉載請自行聯系原作者

繼續閱讀