RepairQDFFile
除錯、文件修復
描述
修復人工編輯改動串流長度或物件位元組位置後的 QDF PDF
修復程序掃描物件邊界、不信任過期的交叉參照偏移,重新計算串流長度、更新間接長度物件,並重建空閒清單、交叉參照表、trailer、startxref 與 /Size
當物件帶有明確無歧義的 QDF 串流標記時,包含 endstream 和 endobj 行的串流資料會被保留。無效的 QDF 輸入以及同一物件的重複標記會在開啟目標檔案之前遭到拒絕,即使在就地修復期間也能保留既有的輸出檔案
語法
Delphi
Function TPDFlib.RepairQDFFile(Const InputFileName, OutputFileName: WideString): Integer;DLL
int DLRepairQDFFile(int InstanceID, const wchar_t* InputFileName, const wchar_t* OutputFileName);ActiveX
Function PDFlib::RepairQDFFile(InputFileName As String, OutputFileName As String) As Long參數
| InputFileName | The edited QDF PDF |
|---|---|
| OutputFileName | 修復後 PDF 的路徑,可與輸入路徑相同 |
傳回值
| 1 | 編輯過的 QDF 已修復 |
|---|---|
| 0 | 輸入不是可修復的 QDF,或無法寫出目的地 |
錯誤
LastErrorCode 401 表示輸入讀取失敗,107 表示 QDF 結構無效、具歧義或其他修復失敗,305 則表示輸出寫入失敗
備註
完整來源會先在記憶體中修復,再寫入目的目錄下以獨佔方式建立的暫存檔。在同磁碟區替換發布結果之前,會先 flush 並關閉該檔案。寫入、flush 或替換失敗時,既有目的檔案的位元組會保持原樣,並傳回錯誤 305;輸入讀取失敗則傳回 401
目的目錄必須允許建立暫存檔並執行替換。以唯讀方式或未允許刪除共用的方式開啟的 Windows 目標檔案無法被替換。在任何修復資料寫入之前,既有目標的 DACL 權限會先複製到暫存檔;權限無法存取、目標缺少明確的 DACL,或目標經 EFS 加密時,都會產生錯誤 305。替換成功會建立新的檔案身分,且不保留替代資料流或一般檔案屬性。在正常的成功或失敗結束後,暫存檔都會被移除;程序突然終止時可能留下暫存檔。此 API 不保證在斷電或其他寫入者同時變更的情況下仍能存活