表單列印的多個部分都可以進行自定義,大多數的自定義選項存在于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 &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,如需轉載請自行聯系原作者