表單打印的多個部分都可以進行自定義,大多數的自定義選項存在于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對象,并設置屬性指定不打印網格線或行標題,并且只打印包含數據的單元格。
FarPoint.Win.Spread.PrintInfo printset =
new FarPoint.Win.Spread.PrintInfo(); |
printset.ShowGrid = false; |
printset.ShowRowHeader = FarPoint.Win.Spread.PrintHeader.Hide; |
fpSpread1.Sheets[0].PrintInfo = printset; |
自定義打印作業設置
如果你沒有指定其他打印機的話,表單會使用你的Windows系統環境中當前的默認打印機進行打印。你可以在任意支持Windows的打印機上打印表單。
你可以自定義的打印作業設置項包括打印機、紙張來源、以及紙張大小。相對應的,可以設置PrintInfo對象中的Printer,PaperSource,或PaperSize屬性。
下面的示例代碼從一個復選框中選擇了紙張來源,并在打印所有表單前設置了紙張的大小。
private void Form1_Load(object sender, System.EventArgs e) |
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屬性中進行了預定義,你可以指定一個圖片。
你可以添加文本包括頁數和總的打印頁數。
你可以保存頁眉或頁腳中的字體設置,以便重復使用。
這個是下面代碼運行的結果。

下面的示例代碼打印帶有指定頁眉和頁腳文本的表單:
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"; |
fpSpread1.Sheets[0].PrintInfo = printset; |
在打印頁面上循環打印行或列
你可以指定出現在每一個打印頁頂部的行或左邊的列。使用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; |
fpSpread1.Sheets[0].PrintInfo = printset; |
添加分頁符
你可以在指定的行或列前添加強制分頁符。分頁符不會在屏幕上顯示,但是在打印表單時會強制分頁。列的分頁符位于指定列的左邊。行的分頁符位于指定行的上方。要添加或設置分頁符,使用SetRowPageBreak 和SetColumnPageBreak方法。
你也可以檢索到表單中位于分頁符后的下一行或列。要查看已經設置的分頁符,使用GetRowPageBreaks方法返回行分頁符的數量,使用GetColumnPageBreaks方法返回列分頁符的數量。
你可以使用GetPrintPageCount方法 計算表單的打印頁數。
下面的示例代碼設置了行分頁符,并為行分頁符返回了總行數。
FarPoint.Win.Spread.PrintInfo pi = new FarPoint.Win.Spread.PrintInfo(); |
fpSpread1.Sheets[0].PrintInfo = pi; |
fpSpread1.Sheets[0].SetRowPageBreak(5,true); |
i = fpSpread1.GetRowPageBreaks(0); |
為打印頁面添加水印
在打印表單時,你可以打印一張背景圖片或水印。打印時,觸發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(); |
fpSpread1.ActiveSheet.PrintInfo = pi; |
標簽:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客園