HotXLS 文件 / API 參考

可攜式列印計畫

把邏輯分頁與原生輸出分開:lxPortablePrint 從分離的渲染快照建立不可變的列印計畫,lxPortableCairo 則在 Linux 與 macOS 上把計畫頁面繪成 PDF、SVG 或 PNG

規劃器使用實際的點與完整的儲存格邊界,保留合併範圍、重複列欄標題,並套用不重疊的列印範圍、手動分頁、方向、邊距、置中、縮放與頁面順序,全程不改變來源活頁簿

使用活頁簿版面設定

lxPortableWorkbookPrint 中的 CreateXLSPortableWorkbookPrintPlan 提供借用 TXLSWorkbook 與 TXLSXWorkbook 的多載;兩者都接受 SheetIndex、OriginRow、OriginColumn、Snapshot 與 Defaults

工作表索引與快照原點都是 1 為基底;配接器要求快照來自目前的活頁簿世代,且擷取矩形完整包含每個列印範圍與重複標題範圍

快照身分包含其世代,相符的工作表與原點由呼叫端提供;傳送快照時請保留正確的工作表內容,因為快照格式沒有編碼活頁簿或工作表身分

Snapshot := CaptureXLSPortableRenderSnapshot(Owner, 1, 1, 1, 30, 6,
  XLSDefaultPortableRenderLimits, Geometry);
Plan := CreateXLSPortableWorkbookPrintPlan(Workbook, 1, 1, 1,
  Snapshot, XLSDefaultPortablePrintOptions);
Layout := PrepareXLSPortableCairoLayout(Plan, Fonts,
  XLSDefaultPortableCairoOptions);
try
  Files := Layout.Save('/srv/output/report.pdf', xpcfPDF);
  Files := Layout.Save('/srv/output/report.svg', xpcfSVG);
  Files := Layout.Save('/srv/output/report.png', xpcfPNG);
finally
  Layout.Free;
end;

在 Linux 或 macOS 上擷取時,請使用直接的原生活頁簿擷取所描述的明確字型幾何提供者;分頁本身不需要 Cairo、字型檔、Excel 或印表機驅動程式

活頁簿配接器取得暫時的讀取租約,讀取既有中繼資料並回傳分離資料;它既不透過擁有介面收養原始活頁簿,也不在結果中保留活頁簿租約

加引號的工作表名稱、跳脫引號與逗號分隔的列印範圍只對被選工作表接受;指向擷取矩形外的參照、外部工作表參照、不完整的標題範圍與畸形範圍都會被明確拒絕

可識別的紙張大小為 Letter、Tabloid、Ledger、Legal、A3、A4、A5、B4 與 B5;未指定的紙張大小使用 Defaults.PageWidthPoints 與 Defaults.PageHeightPoints,而無法識別的明確紙張大小會被拒

頁首頁尾內容、列印列欄標號、啟用的列印格線、黑白或草稿外觀、列印註解與錯誤替代值目前都會被拒,因為這個配接器無法如實繪製這些設定;傳統活頁簿預設啟用列印格線,所以這條受支援契約請關閉 PageSetup.PrintGridlines

縮放模式與原生預設

TXLSXWorksheet.PageFitToPages 獨立於其尺寸選擇貼合模式:設定 FitToWidth 或 FitToHeight 即選擇貼合模式,設定 PageScale 則選擇百分比縮放

XLSX 匯入保留 sheetPr/pageSetUpPr/@fitToPage,以及貼合維度省略時 OOXML 預設的一;匯出保留明確的零維度,XLS 與 XLSX 轉換保留所選模式

百分比縮放忽略過時的貼合維度;貼合模式忽略儲存的百分比縮放,正的貼合維度忽略手動分頁;兩軸皆為零時以 100% 縮放保留手動分頁,正的上限會縮小過大的內容,但不放大過小的範圍

邏輯分頁取決於提供的快照幾何;印表機驅動程式指標與 Excel PDF 匯出縮放可能改變實際輸出,不保證視覺上完全等價

直接建構分離計畫

CreateXLSPortablePrintPlan(Snapshot, Areas, Options) 接受以零為基底、含端的 TXLSPortablePrintRanges;空的 Areas 陣列選擇整個快照,每個 TXLSPortablePrintRange 包含 FirstRow、FirstColumn、LastRow 與 LastColumn

從 XLSDefaultPortablePrintOptions 開始,再設定下方 TXLSPortablePrintOptions 的欄位

欄位契約
PageWidthPoints, PageHeightPoints正數的實體紙張尺寸,以點為單位,預設 A4
MarginLeftPoints, MarginTopPoints, MarginRightPoints, MarginBottomPoints非負邊距,且必須留下正的可列印矩形,預設 36 點
Landscape, CenterHorizontally, CenterVertically橫向會對調直向尺寸;置中套用到每頁主體與其重複標題
ScalePercent10 到 400,預設 100;兩個貼合維度都不是正數時套用
FitToPagesWide, FitToPagesTall非負的頁數上限,零表示該軸不受限;正的上限會在 10% 到 100% 之間找出可行的縮放
TitleFirstRow, TitleLastRow, TitleFirstColumn, TitleLastColumn完整的以零為基底、含端的標題範圍,或兩端都是 -1 以停用該軸
RowBreaks, ColumnBreaksTXLSPortablePrintBreaks 陣列,包含嚴格遞增且唯一的以零為基底分頁位置;活頁簿調整會排序分離的中繼資料,不編輯工作表
OrderTXLSPortablePrintOrder:xppoDownThenOver 或 xppoOverThenDown
MaxPages正數的總頁數上限,預設 256,最大 100,000
MaxPlanBytes工作儲存、分離快照承載與頁面記錄共用這個正數記憶體預算,預設 64 MiB,最大 1 GiB
MaxPlanningSteps正數且有界的規劃工作預算,預設 64 Mi 步,最大 2 Gi 步;超過會擲出 EXLSPortablePrintBudget

幾何必須是有限值;隱藏維度尺寸為零,分頁不得切開合併,範圍或標題不得與合併部分相交,過大的儲存格或合併會被拒,而不是默默裁掉

檢視或渲染結果

IXLSPortablePrintPlan.Snapshot 擁有一份分離的不可變渲染快照,PageCount 回報邏輯頁數,以零為基底的 Pages[Index] 回傳帶分離瓷磚陣列的 TXLSPortablePrintPage

每頁公開 AreaIndex、AcrossIndex、DownIndex、其以零為基底且含端的 Body、Scale、PageWidthPoints、PageHeightPoints 與 Tiles

TXLSPortablePrintTiles 最多包含四個 TXLSPortablePrintTile 記錄,對應重複的角落、標題列、標題欄與主體;每個瓷磚公開未縮放的來源 SourceLeft、SourceTop、SourceRight、SourceBottom,以及實體目的地 DestinationLeft、DestinationTop

PrepareXLSPortableCairoLayout(Plan, Fonts, Options) 多載保留分離的頁面記錄,為每個瓷磚裁切與縮放場景內容,並使用計畫的紙張尺寸與邊距;點陣、字型、shaping 與繪製預算對重複內容照樣生效

Layout.PageCount 與計畫相符;PDF 產生一個多頁檔,SVG 與 PNG 則每個邏輯頁一個檔;版面的文字行檢視保留未縮放的快照座標,而不是每頁重複後的位置

既有的輸出檔案會被拒,Windows 上的原生 Cairo 進入點仍明確不受支援;依賴、字型映射、場景與輸出上限請見可攜式無頭輸出