/// <summary> /// Calculates the actual spreadsheet range that will be printed. This is given by: /// 1)If you specified non zero values on PrintRange, this will be used. /// 2)If any value in PrintRange is zero and there is a Print Area defined on the /// spreadsheet, the Print Area will be used. /// 3)If there is no PrintRange and no Print Area defined, the visible cells on the /// sheet will be printed. /// </summary> ///<returns>The area that will be exported.</returns> public TXlsCellRange CalcPrintArea() { Workbook.Recalc(false); PdfCanvas = new PdfWriter(); PdfGraphics RealCanvas = new PdfGraphics(PdfCanvas); PrepareCanvas(); IFlxGraphics aCanvas = RealCanvas; FRenderer.SetCanvas(aCanvas); try { FRenderer.CreateFontCache(); try { return(FRenderer.InternalCalcPrintArea(FPrintRange)[0]); } finally { FRenderer.DisposeFontCache(); } } finally { FRenderer.SetCanvas(null); } }
private TImgExportInfo GetExportInfo(IFlxGraphics aCanvas) { TImgExportInfo Result = new TImgExportInfo(); if (AllVisibleSheets) { int FirstVisibleSheet = -1; int SaveActiveSheet = Workbook.ActiveSheet; try { Result.Sheets = new TOneImgExportInfo[Workbook.SheetCount]; for (int sheet = 1; sheet <= Workbook.SheetCount; sheet++) { Workbook.ActiveSheet = sheet; if (Workbook.SheetVisible != TXlsSheetVisible.Visible) { continue; } if (FirstVisibleSheet < 0) { FirstVisibleSheet = sheet; } TOneImgExportInfo OneResult = new TOneImgExportInfo(); OneResult.FPrintRanges = FRenderer.InternalCalcPrintArea(FPrintRange); TPaperDimensions pd = GetRealPageSize(); OneResult.FPageBounds = new RectangleF(0, 0, pd.Width, pd.Height); FRenderer.InitializePrint(aCanvas, OneResult.PageBounds, OneResult.PageBounds, OneResult.PrintRanges, out OneResult.FPaintClipRect, out OneResult.FTotalPages, out OneResult.FPagePrintRange); Result.Sheets[sheet - 1] = OneResult; } } finally { Workbook.ActiveSheet = SaveActiveSheet; } Result.CurrentSheet = FirstVisibleSheet; } else { TOneImgExportInfo OneResult = new TOneImgExportInfo(); OneResult.FPrintRanges = FRenderer.InternalCalcPrintArea(FPrintRange); TPaperDimensions pd = GetRealPageSize(); OneResult.FPageBounds = new RectangleF(0, 0, pd.Width, pd.Height); FRenderer.InitializePrint(aCanvas, OneResult.PageBounds, OneResult.PageBounds, OneResult.PrintRanges, out OneResult.FPaintClipRect, out OneResult.FTotalPages, out OneResult.FPagePrintRange); Result.Sheets = new TOneImgExportInfo[1]; Result.Sheets[0] = OneResult; Result.CurrentSheet = Workbook.ActiveSheet; } Result.ResetCurrentPage(); LastInitSheet = 0; return(Result); }
private int TotalPagesInSheet(PrintPageEventArgs e, IFlxGraphics aCanvas, RectangleF VisibleClipInches100) { TXlsCellRange[] MyPrintRange = FRenderer.InternalCalcPrintArea(FPrintRange); TXlsCellRange PagePrintRange; RectangleF[] PaintClipRect; int TotalPages; bool Landscape = (Workbook.PrintOptions & TPrintOptions.Orientation) == 0; FRenderer.InitializePrint(aCanvas, ConvertToUnits(e.PageBounds, Landscape != e.PageSettings.Landscape), ConvertToMargins(e.Graphics, e.PageBounds, VisibleClipInches100, e.PageSettings.Landscape != Landscape), MyPrintRange, out PaintClipRect, out TotalPages, out PagePrintRange); return(TotalPages); }