【PDF】 行と列の繰り返し設定を含むPDFエクスポートにおいて、繰り返す領域の幅が広いとページの一部が欠落する
対象製品
SPREAD for ASP.NET 7.0J
状況
修正済み
詳細
行と列の繰り返し設定を含むPDFエクスポートにおいて、繰り返す領域の幅が広いとページの一部が欠落する場合があります。
【再現手順】
1.新規WebフォームにButtonコントロールひとつ、SPREADひとつを配置します
2.下記の再現コードを貼り付け、Web フォームを起動します
3.ボタンを押下してPDFエクスポートを行います
--- 出力されたPDFの2ページ目ではページ内容がページに収まらず、3ページ目では出力されるべき列数が出力されません
【再現コード】
---------------------------------
Webフォーム1クラス
---------------------------------
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack Then
Return
End If
' シートの設定
FpSpread1.ActiveSheetView.ColumnCount = 30
FpSpread1.ActiveSheetView.RowCount = 1
For i As Integer = 2 To FpSpread1.ActiveSheetView.ColumnCount - 1
FpSpread1.ActiveSheetView.SetValue(0, i, String.Format("R0C{0}", i))
Next
FpSpread1.ActiveSheetView.Columns.[Default].Width = 50
FpSpread1.ActiveSheetView.Columns(0, 1).Width = 150
' 印刷の設定
FpSpread1.ActiveSheetView.PrintInfo.PrintType = FarPoint.Web.Spread.PrintType.CellRange
FpSpread1.ActiveSheetView.PrintInfo.ColStart = 0
FpSpread1.ActiveSheetView.PrintInfo.ColEnd = FpSpread1.ActiveSheetView.ColumnCount - 1
FpSpread1.ActiveSheetView.PrintInfo.RowStart = 0
FpSpread1.ActiveSheetView.PrintInfo.RowEnd = FpSpread1.ActiveSheetView.RowCount - 1
FpSpread1.ActiveSheetView.PrintInfo.RepeatColStart = 0
FpSpread1.ActiveSheetView.PrintInfo.RepeatColEnd = 1
FpSpread1.ActiveSheetView.PrintInfo.RepeatRowStart = 0
FpSpread1.ActiveSheetView.PrintInfo.RepeatRowEnd = FpSpread1.ActiveSheetView.RowCount - 1
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FpSpread1.SavePdfToResponse("test.pdf")
End Sub
End Class
【再現手順】
1.新規WebフォームにButtonコントロールひとつ、SPREADひとつを配置します
2.下記の再現コードを貼り付け、Web フォームを起動します
3.ボタンを押下してPDFエクスポートを行います
--- 出力されたPDFの2ページ目ではページ内容がページに収まらず、3ページ目では出力されるべき列数が出力されません
【再現コード】
---------------------------------
Webフォーム1クラス
---------------------------------
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack Then
Return
End If
' シートの設定
FpSpread1.ActiveSheetView.ColumnCount = 30
FpSpread1.ActiveSheetView.RowCount = 1
For i As Integer = 2 To FpSpread1.ActiveSheetView.ColumnCount - 1
FpSpread1.ActiveSheetView.SetValue(0, i, String.Format("R0C{0}", i))
Next
FpSpread1.ActiveSheetView.Columns.[Default].Width = 50
FpSpread1.ActiveSheetView.Columns(0, 1).Width = 150
' 印刷の設定
FpSpread1.ActiveSheetView.PrintInfo.PrintType = FarPoint.Web.Spread.PrintType.CellRange
FpSpread1.ActiveSheetView.PrintInfo.ColStart = 0
FpSpread1.ActiveSheetView.PrintInfo.ColEnd = FpSpread1.ActiveSheetView.ColumnCount - 1
FpSpread1.ActiveSheetView.PrintInfo.RowStart = 0
FpSpread1.ActiveSheetView.PrintInfo.RowEnd = FpSpread1.ActiveSheetView.RowCount - 1
FpSpread1.ActiveSheetView.PrintInfo.RepeatColStart = 0
FpSpread1.ActiveSheetView.PrintInfo.RepeatColEnd = 1
FpSpread1.ActiveSheetView.PrintInfo.RepeatRowStart = 0
FpSpread1.ActiveSheetView.PrintInfo.RepeatRowEnd = FpSpread1.ActiveSheetView.RowCount - 1
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FpSpread1.SavePdfToResponse("test.pdf")
End Sub
End Class
回避方法
Service Pack 3(v7.0.4017.2010)で修正済み。
Service Pack 3(v7.0.4017.2010)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
明示的にPageBreakプロパティを設定し改ページすることで現象を回避することが可能です。
【再現コードへの適用例】
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'(途中略)
'改ページを行いたい列の前で強制的に改行
'以下の例ではW列での改行を設定しています
FpSpread1.ActiveSheetView.Columns(22).PageBreak = True
End Sub
Service Pack 3(v7.0.4017.2010)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
明示的にPageBreakプロパティを設定し改ページすることで現象を回避することが可能です。
【再現コードへの適用例】
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'(途中略)
'改ページを行いたい列の前で強制的に改行
'以下の例ではW列での改行を設定しています
FpSpread1.ActiveSheetView.Columns(22).PageBreak = True
End Sub