THotPDF 進階工作流程方法

本頁彙整支援已載入文件修復、檔案直接重寫、xref 串流解析、符合性輸出與 shaping 工作流程的進階公開 THotPDF 方法

一般應用程式碼請優先查閱任務導向的頁面,例如頁面操作方法、已載入表單欄位方法、公用方法與 ShapingFeatures

已載入文件解析

方法 用途
DoPageOperationProgress透過設定的進度事件發送頁面操作進度
ResolveLoadedObject把已載入的物件參照解析成頁面操作可檢視或複製的物件
ResolveLoadedDictionary解析已載入的物件參照,可能的話以字典傳回
ResolveLoadedArray解析已載入的物件參照,可能的話以陣列傳回
EnsureLoadedRootIndex在物件圖操作繼續之前,先確定已載入 catalog 的索引
MaterializeLazyStreams在整檔重寫或物件層級複製之前,先載入延後讀取的串流資料
FindLoadedFormFieldByIndex依欄位索引傳回已載入的 AcroForm 欄位字典,並回報其生效名稱
FindLoadedFormFieldByName依完整限定欄位名稱傳回已載入的 AcroForm 欄位字典
ConfigurePDFVersion把目前選定的 PDF 版本能力套用到文件輸出設定
RecoverReloadFEKFromBytes密碼比對成功時,為重新載入的加密文件還原檔案加密金鑰
LoadedEncryptVersion回報目前載入文件的加密修訂版
IsObjStmMemberObject回報物件是否來自物件串流成員、是否需要物件串流感知的處理
SyncMaxObjNumFromLoadedObjects重新掃描已載入物件,避免新配置的物件編號與既有編號衝突

直接檔案狀態與重寫

方法 用途
ClearDirectFileState控制代碼重用或釋放之前,先清除直接檔案狀態記錄
GetDirectFileIndex把直接檔案控制代碼對應到 Direct File API 使用的狀態槽位
DAFindReplacementIndex在直接檔案狀態記錄中找出某物件編號的替換項目
DAReadObjectSource從直接檔案狀態讀取已儲存的物件原始位元組與 generation 資料
DAStoreObjectSource把物件原始位元組存進直接檔案狀態,供後續重寫
DAAppendObjectSourceInternal在直接檔案狀態附加新的物件主體,並傳回配置到的物件編號
DATryBuildCompressedFileState支援時,為使用壓縮物件串流的檔案建立直接檔案狀態
DADirectLoadObjectFromBody把直接檔案的物件主體解析成已載入物件實例
DARecoverAES256FileKey從加密字典與密碼還原 AES-256 檔案金鑰
DADirectPrepareObjectForAES256Encrypt在 AES-256 直接檔案加密之前,備妥物件字典與串流
DADirectDecryptObjectAES256用啟用的 AES-256 檔案金鑰解密已解析的直接檔案物件
DAWriteDirectAES256Rewrite把直接檔案的 AES-256 加密或解密重寫寫入目標檔案
DADirectEncryptFileAES256走直接檔案重寫路徑,以 AES-256 加密既有檔案
DADirectDecryptFileAES256走直接檔案重寫路徑,解密既有的 AES-256 檔案
DAWriteFullRewrite使用目前狀態表寫出完整的直接檔案重寫

XRef 串流與物件解析

方法 用途
LoadXRefStreamDocument載入 startxref 指向 xref 串流的文件
LoadXRefStreamDocumentFromFile從檔案載入 xref 串流文件,並傳回關鍵的物件位置診斷資訊
LoadXRefStreamDocumentEncFromFile從檔案載入有密碼保護的 xref 串流文件
XRefProbeObjCount回報 xref 串流載入器註冊了多少物件
XRefProbeObjNum傳回診斷索引(以 0 為起始)所指的物件編號
XRefProbeCompactCount回報從物件串流實體化的壓縮物件數量
XRefProbeType2Mismatches回報載入 type-2 xref 項目時發現的物件串流標頭不一致
XRefProbeObjHasKey檢查已載入的診斷物件字典是否含指定鍵值
XRefProbeObjNameVal從已載入的診斷物件字典傳回名稱值
XRefProbeCompactObjNum傳回緊湊物件診斷項目的物件編號
XRefProbeType2EncryptedSkipped回報 type-2 物件串流載入器跳過的加密物件串流
XRefProbeCountReplacementChars統計已載入字串診斷裡的 Unicode 替代字元數
XRefProbeObjStringVal從已載入的診斷物件字典傳回字串值
XRefProbeDecryptObjStmSkips回報為避免重複解密而跳過解密的物件串流成員數
TryParseModernPDF對 xref 串流與物件串流文件嘗試新版 PDF 解析路徑
CreateBasicPageContent為已載入或合成的頁面建立最小化的頁面內容物件
CreatePDF16PageReference用已載入的物件圖建立 PDF 1.6 頁面參照
CreateBasicResources為頁面重建建立最小化的資源字典
CreatePDF16Resources為頁面重建建立 PDF 1.6 資源字典
ParseSimplePageObject把簡單頁面物件解析成已載入頁面的表示形式
ParseRealPageContent為已載入頁面解析原始頁面內容串流
ProcessObjectStreamsForDecompression在檢視或複製解壓縮物件之前,先處理物件串流
ScanAndLoadReferencedObjects掃描頁面與資源字典,並載入參照到的物件
ForceLoadMissingReferencedObjects載入第一輪解析時尚未實體化的參照
FindAllObjectStreams在已載入的文件圖中找出物件串流
ExtractStreamParameters擷取物件串流的長度、數量與第一個物件偏移值
ProcessFlateDecode處理 FlateDecode 壓縮的物件串流位元組
AnalyzePageObject分析頁面物件主體,並更新已載入頁面的追蹤資訊
ExtendPageArr把頁面間接物件加入已載入頁面陣列
ParseSimpleDictionaryParses a dictionary body into a THPDFDictionaryObject
ParseSimpleArrayParses an array body into a THPDFArrayObject
ParseSimpleStreamParses a stream body into a THPDFStreamObject
FindAndProcessObjectStream依物件編號找出物件串流並處理其成員
ExtractObjectFromStream從物件串流成員擷取解析後的字典物件
ExtractRawObjectFromStream從物件串流成員擷取原始物件位元組
IsObjectInStream回報物件編號是否屬於某個物件串流
GetObjectFromStream以字典物件傳回解析後的物件串流成員
ParseModernPageObject解析透過新版物件串流路徑找到的頁面物件
IntelligentDecompress以格式感知的後備邏輯嘗試解壓縮
DecompressFlateDecode解壓縮 FlateDecode 串流位元組
ParseObjectStream解析物件串流的標頭與成員表
ReorderPageArrByPagesTree依頁面樹重排已載入頁面
GetCorrectPageOrderFromPagesTree從已載入的頁面樹建立頁面順序
GetPageObjectId傳回已載入頁面索引對應的物件編號
GetPageArrIndexForObjectNumber傳回頁面物件編號對應的已載入頁面陣列索引
ExtractNumericValue從原始物件內容中擷取指定鍵名後的整數值
ParseDecompressedObjects解析解壓縮後的物件串流成員,並傳回關鍵物件編號
LoadCompressedXrefStream載入壓縮 xref 串流資料,供新版文件解析使用
LoadObjectStreamsDirectly直接從目前來源文件載入物件串流
ParseXrefStreamData解析已解碼的 xref 串流表格資料
ProcessObjectStreamObjects從串流物件編號開始處理解壓縮後的物件串流物件

符合性與字型輸出

方法 用途
BuildAndApplyUnicodeFontSubset建立啟用中的 Unicode 字型子集,並套用產生的字型串流與對映資料
EnsurePDFUATabsOnAnnotatedPagesEnsures annotated PDF/UA pages declare the required tab order
EnsurePDFAOutputIntentChecks that a PDF/A output intent is present when the selected PDF/A profile requires one
EnsurePDFAColorSpaceConsistencyChecks device colour-space usage against PDF/A output-intent and default-colour-space settings
EmitDocumentDefaultColorSpacesWrites document default colour-space mappings used by PDF/A workflows
EnsurePDFXOutputIntentChecks that a PDF/X output intent is present before output is finalized
EnsurePDFXPageBoxesChecks page boxes required by PDF/X output profiles
_FindPAdESDSSStreamByDER建立 PAdES VRI 參照時,找出 DER 位元組與憑證、OCSP 回應或 CRL 相符的既有 DSS 串流

進階 Shaping 輔助方法

方法 用途
ApplyArabicGSUBPositional套用阿拉伯文的 GSUB 位置替換,並透過合成碼位對映 shaping 後的字形 ID
ArabicGSUBShapeToGIDs傳回阿拉伯文 GSUB shaping 後的字形 ID 序列,但不輸出文字
ApplyArabicGSUBNativeShaping為提供位置字形替換的字型套用原生阿拉伯文 GSUB shaping
ApplyLatinLigatureFeature對 Unicode 文字片段套用指定的拉丁連字 feature,例如 liga 或 clig
ApplyLatinSingleSubstitutionFeature對 Unicode 文字片段套用指定的拉丁單字替換 feature
ApplyLatinFractionFeature字型有提供所需替換時,對數字分數片段套用 frac feature
ApplyArabicGSUBRefinement在基礎阿拉伯文 shaping 之後,套用阿拉伯文 GSUB 連字精修
_ApplyGSUBLookupAt在字形序列的某個位置套用一個已解析的 GSUB lookup,並回報更新後的區間
_ApplyGSUBFeatureToRun依 lookup 清單順序,對字形序列套用單一 GSUB feature 的所有 lookup
_ApplyGSUBFeatureAtRunPosition供位置敏感的 shaping 階段在字形序列單一位置套用 GSUB feature
_TibetanShapeSpanToGIDs在合成碼位輸出之前,把一段藏文 shaping 成字形 ID
_GSUBResolveIndicScript挑選字型中可用的 OpenType Indic script 標籤,有 v2 script 標籤時優先採用
_IndicShapeSyllableToGIDs對重排後的單一音節套用 Indic GSUB feature 鏈,並傳回字形 ID

請參閱