MESCIUS SPREAD for Windows Forms 17.0J > 開発者ガイド > 印刷 > 印刷の最適化 > 規則を使用した最適化 |
製品では、最適な印刷方法を自動的に決定する機能を提供しています。印刷の最適化には既定の規則が適用されますが、適用する規則を選択することもできます。たとえば、既定では、シートが縦方向のページ幅に収まらない場合にシートを横向きに印刷する規則が有効ですが、これを無効にすることができます。
以下、指定できる規則です。規則は有効、または無効にでき、各規則を表すオブジェクトのプロパティを設定することでカスタマイズできます。
規則オブジェクト | 説明 |
---|---|
LandscapeRule | シートを横向きまたは縦向きのどちらで印刷するかを定義します。 |
ScaleRule | シートを印刷するための最適な縮尺率を定義します。100%(StartFactor = 1)から開始され、指定の段階値によって、最小サイズ(EndFactor)まで縮小されます。 既定値はそれぞれStartFactor = 1、EndFactor = 0.6、および Interval = 0.1となります。 |
BestFitColumnRule | 印刷ページ上での、シートの列幅の最適な調整方法を定義します。 |
既定では、シートの印刷は以下のロジックにしたがって最適化されます。
各規則のオブジェクトを使用して、このロジックをカスタマイズできます。各規則のオブジェクトをカスタマイズすると、既定の規則は無視され、カスタマイズした規則が印刷時に適用されます。SmartPrintRulesCollectionオブジェクトを使用することで、規則のコレクションを設定できます。また、PrintInfoオブジェクトのUseSmartPrintプロパティで、これらの規則を使用するかどうかを設定できます。
次のサンプルコードは、既定で適用される最適化のロジックをカスタマイズするために、SmartPrintRulesCollectionオブジェクトを作成します。この例では、列幅を最長の文字列に合わせて縮小することでシートがページに収まる場合、列幅を縮小して印刷を行います。列幅の縮小によってもシートがページに収まらない場合、縮小したままの状態で、シートの横向き印刷を試みます。それでもページに収まらない場合、これらの設定値を維持したまま、シート全体を縮小します。縮小率は100%から開始し、20%ずつ、最大40%まで縮小します。
C# |
コードのコピー
|
---|---|
// 印刷規則を作成します。 FarPoint.Win.Spread.SmartPrintRulesCollection printrules = new FarPoint.Win.Spread.SmartPrintRulesCollection(); printrules.Add(new FarPoint.Win.Spread.BestFitColumnRule(FarPoint.Win.Spread.ResetOption.None)); printrules.Add(new FarPoint.Win.Spread.LandscapeRule(FarPoint.Win.Spread.ResetOption.None)); printrules.Add(new FarPoint.Win.Spread.ScaleRule(FarPoint.Win.Spread.ResetOption.All, 1.0f, .4f, .2f)); // PrintInfoオブジェクトを作成し、各プロパティを設定します。 FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo(); printset.SmartPrintRules = printrules; printset.UseSmartPrint = true; // 先頭シートのPrintInfoプロパティを設定します。 fpSpread1.Sheets[0].PrintInfo = printset; // シートを印刷します。 fpSpread1.PrintSheet(0); |
Visual Basic |
コードのコピー
|
---|---|
' 印刷規則を作成します。 Dim printrules As New FarPoint.Win.Spread.SmartPrintRulesCollection() printrules.Add(New FarPoint.Win.Spread.BestFitColumnRule(FarPoint.Win.Spread.ResetOption.None)) printrules.Add(New FarPoint.Win.Spread.LandscapeRule(FarPoint.Win.Spread.ResetOption.None)) printrules.Add(New FarPoint.Win.Spread.ScaleRule(FarPoint.Win.Spread.ResetOption.All, 1.0F, 0.4F, 0.2F)) ' PrintInfoオブジェクトを作成し、各プロパティを設定します。 Dim printset As New FarPoint.Win.Spread.PrintInfo() printset.SmartPrintRules = printrules printset.UseSmartPrint = True ' 先頭シートのPrintInfoプロパティを設定します。 FpSpread1.Sheets(0).PrintInfo = printset ' シートを印刷します。 FpSpread1.PrintSheet(0) |