原生 Linux HTML、編輯、OCR 與保存工作流程
原生 Linux callback ABI 接受 html.import、text.draw、ocr 與 pdfa.convert,皆為 schemaVersion 1,並沿用既有的輸出、結果、工作位元組與像素預算
HTML 匯入
{"schemaVersion":1,"type":"html.import","html":"<h1>Invoice</h1><p>Searchable Unicode</p>","createAcroForms":true}
HTML 匯入在空 handle 上執行,使用共用的 HTML5/CSS 版面引擎,搭配原生繪圖 canvas、Fontconfig 比對、內嵌 Unicode TrueType 字型、HarfBuzz/FriBidi shaping、PNG/JPEG/BMP/GIF 資源、alpha 遮罩、超連結、分頁與 AcroForm 控制項
ABI 接受行內資料資源;它不安裝網路或檔案資源 callback,而 Pascal 呼叫端可以提供既有的匯入 callback,明確提供字型、影像與樣式表資源
選填的 pageWidth 與 pageHeight 使用點;maxPages 與 maxLayoutOperations 必須為正,DOM、CSS、資源與影像配置同樣遵循操作預算
頁面文字編輯
{"schemaVersion":1,"type":"text.draw","page":0,"text":"Searchable Unicode","left":36,"bottom":36,"right":559,"top":108,"fontFamily":"DejaVu Sans","fontSize":12,"invisible":true}
插入會保留原始頁面串流,包括間接參照的內容陣列,並附加一個帶私有資源名稱的內嵌 Unicode 表單外觀;隱形文字使用 render 模式 3,仍可搜尋
座標是未旋轉的 PDF 使用者空間點;characterSpacing 與 wordSpacing 使用點,已驗證的 AES-256 取代會保留加密、密碼與權限
Pascal 的AppendPageText API 另外接受四分之一圈的外觀旋轉與明確的矩形貼合
實際 OCR
{"schemaVersion":1,"type":"ocr","pages":[0],"language":"eng","dpi":216,"searchLayer":true,"maxMilliseconds":120000}
OCR 會 render 實際的頁面像素,以引數向量直接呼叫已安裝的 Tesseract 執行檔,讀取受限的 TSV 單字,驗證 UTF-8、信心值與頁面座標,並把旋轉/裁切的頁面幾何映射回 PDF 座標
結果包含每頁單字的文字、信心值、left、bottom、right 與 top;searchLayer 為 false 時只回傳辨識資料,為 true 時另外輸出一份帶貼合隱形內嵌字型文字的 PDF
選填的 tesseractPath 可指定明確的執行檔;maxWords、minimumConfidence 與 maxMilliseconds 約束辨識,取消或逾時會終止並回收執行中的 process
原生 PDF/A-4 raster 輸出
{"schemaVersion":1,"type":"pdfa.convert","profile":"PDF/A-4","dpi":144}
原生 raster 轉換會撰寫全新的未加密 PDF 2.0 頁面,烘焙頁面旋轉、PDF/A-4 XMP、文件識別碼與產生的內嵌 sRGB 輸出意圖;目前的驗收包含零失敗規則的獨立 veraPDF 驗證與檢查
輸出會把原始文字與向量 raster 化、攤平可見外觀、取代來源 metadata,並丟棄互動欄位、動作、附件與簽章;結果回報 rasterized、removedFormFields 與 removedSignatures
已簽署輸入需要明確的 allowSignatureInvalidation true;可見註解在攤平前需要可用的 normal 外觀,而原生文字/向量保留提供了另一種可搜尋、帶真實驗證的轉換模式
明確的保存字型修復透過受限的 Ghostscript 正規化內嵌可用替代字型,保留可搜尋文字與向量,並在發布前驗證 PDF/A-4
發布與執行環境
所有 binary 輸出都在 callback 前備妥;產生或編輯的文件只在輸出與 JSON callback 成功後才取代 handle,失敗會保留前一個 context
原生 HTML 需要 FCL 影像讀取器、Fontconfig、已安裝的 Unicode TrueType 字型、HarfBuzz 與 FriBidi;OCR 另外需要 Tesseract 與已訓練的語言資料,保存設定檔產生需要 Little CMS 2