【PDF】 行と列の繰り返し設定を含むPDFエクスポートにおいて、繰り返す領域の幅が広いとページの一部が欠落する

文書番号 : 37633     文書種別 : 不具合     登録日 : 2014/10/17     最終更新日 : 2015/03/31
文書を印刷する
対象製品
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
回避方法
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