Thao tác tài liệu JSON và C ABI

export.structured xuất các trang được chọn dưới dạng HTML, XHTML, XML, hoặc JSON ngữ nghĩa; tables.export xuất các bảng có kiểu thành CSV, JSON, hoặc XLSX, giữ lại tính liên tục vượt trang, ô gộp, và suy luận giá trị native

Cả hai thao tác đều đòi hỏi đích output nhị phân, bảo toàn tài liệu và các trường chữ ký hiện có, và phơi các tùy chọn xuất native có chặn trên

Xuất có cấu trúc và xuất bảng có kiểu

{"schemaVersion":1,"type":"export.structured","pages":[0,1],"format":"html",
 "options":{"imageMode":"metadata","includeFormControls":false}}

{"schemaVersion":1,"type":"tables.export","pages":[0,1],"format":"json",
 "options":{"mergeAcrossPages":true,"dateOrder":"dmy",
            "decimalSeparator":",","thousandsSeparator":"."}}

Xuất có cấu trúc nhận html, xhtml, xml, và json (mặc định); xuất bảng nhận csv (mặc định), json, và xlsx

Các tùy chọn Boolean của xuất có cấu trúc là includeCoordinates, includeStyles, includeImages, includeTables, includeAccessibilitySemantics, preferTaggedStructure, fallbackToGeometricSemantics, includeNavigation, includeAnnotations, và includeFormControls; tất cả mặc định là true

imageMode nhận omit, metadata, và embedded-png (mặc định); xem Xuất trang đã nạp có cấu trúc để biết mô hình ngữ nghĩa và hành vi của các trường nhạy cảm

Các tùy chọn tài nguyên của xuất có cấu trúc là maxPageCount, maxGlyphsPerPage, maxImagesPerPage, maxStructureNodes, maxOutlineItems, maxInteractionsPerPage, maxFormOptionsPerField, maxOutputBytes, maxImageBytes, và maxTotalImageBytes

Các tùy chọn Boolean của bảng là detectMergedCells, detectRepeatedHeaders, mergeAcrossPages, và inferValueTypes; tất cả mặc định là true

dateOrder nhận ymd (mặc định), mdy, và dmy; các dấu phân cách phải là ký tự in được đơn lẻ, còn thousandsSeparator rỗng sẽ tắt nó đi

minimumTableConfidence nhận từ 0 đến 1 và mặc định là 0,55; columnTolerance dương mặc định là 12 đơn vị trang

Các tùy chọn tài nguyên của bảng là maxPageCount, maxGlyphsPerPage, maxTableCount, maxRowCount, maxCellCount, maxTextCharacters, và maxOutputBytes; xem Trích xuất bảng có kiểu để biết mô hình ô

Tên tùy chọn lạ, kiểu không hợp lệ, định dạng không hỗ trợ, và giới hạn không dương đều bị từ chối; các giới hạn native được yêu cầu bị chặn trên bởi các ngân sách bộ nhớ và đối tượng bảo thủ

Staging xuất bị chặn trên tại giá trị nhỏ hơn giữa budget.outputBytes và một phần tư budget.memoryBytes; effectiveOutputLimit báo cáo mức chặn đó, trong khi options.maxOutputBytes chặt hơn có thể áp dụng

Lỗi tài nguyên native báo cáo budget-exceeded, metric nativeExportResources, và chẩn đoán native; observed=1 với limit=0 biểu thị tình trạng tài nguyên bị từ chối chứ không phải mức dùng byte đo được

Cả hai thao tác đều báo cáo documentUpdated: false, giữ các cài đặt auto-launch và decode của nguồn, dàn output trước khi công bố, và giữ nguyên đích tệp hiện có sau một file job thất bại

Các kiểm tra deadline và hủy callback ABI mang tính hợp tác tại các checkpoint thao tác và công bố; cancellation token native cũng áp dụng bên trong các giai đoạn trích xuất được hỗ trợ, và công việc native không bị ngắt cưỡng bức

THPDFJobProcessor.ExecuteLoadedOperation và hpdf_document_execute_json_v1 dùng chung cùng một engine thao tác tài liệu theo schema-version

Khám phá tên thao tác, định dạng, signing profile, hành vi callback, và ngân sách mặc định hiện tại bằng THPDFJobProcessor.Capabilities hoặc hpdf_capabilities_json_to_io

Các thao tác

JSON thao tác dùng UTF-8 và schemaVersion: 1; chỉ số trang tính từ zero và mảng trang được chọn không được chứa phần tử trùng

LoạiĐầu vàoKết quả
infoTài liệu đã nạpSố đếm trang, đối tượng, form, và trường chữ ký
renderpage, dpi (18–1.200), format (png)Artifact PNG và kích thước
export.structuredpages, format, optionsArtifact HTML/XHTML/XML/JSON ngữ nghĩa và telemetry xuất
tables.exportpages, format, optionsArtifact CSV/JSON/XLSX có kiểu và telemetry bảng/ô/header
text.extractpages, layout tùy chọnVăn bản trang Unicode và artifact văn bản UTF-8 tùy chọn
text.replacepages, needle, replacement, matchCaseSố đếm khớp/đã thay thế/đã bỏ qua theo từng trang và artifact PDF tùy chọn
forms.readTài liệu đã nạpTên, giá trị Unicode đã giải mã, và kiểu trường native
forms.fillmảng fields với các chuỗi name/valueCập nhật atomic; tên lạ hoặc trùng sẽ từ chối thao tác
forms.flattenTài liệu đã nạpSố đã flatten và các trường còn lại
ocr.layerpages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExistingPDF tìm kiếm được và số đếm từ được nhận/bị bỏ
redactburnIn: true, các hình chữ nhật với page/x1/y1/x2/y2Số redaction đã áp dụng và artifact PDF
signpfxFile, pfxPassword, page, fieldName, hình chữ nhật tùy chọn và contentsBytesArtifact PDF đã ký PFX
archive.pdfa4.rasteracceptInformationLoss: true, iccProfileFile, dpi và options tùy chọnArtifact raster PDF/A-4 đã xác thực, số đếm loại bỏ, và một loss profile tường minh; bảo toàn nguồn đã nạp

Thay thế văn bản trả về trạng thái một phần khi API thay thế native không thể encode một match; hãy xem các số đếm theo trang của nó

OCR hiện phơi engine ASCII tích hợp sẵn; các API Delphi native nhận thêm adapter OCR bên ngoài

Các thao tác biến đổi từ chối tài liệu có trường chữ ký hiện có, kể cả placeholder chưa ký; hãy dùng các API incremental native để giữ chữ ký trong những tài liệu đó

Việc ký sinh ra một artifact đã ký và khôi phục handle gốc, báo cáo documentUpdated: false; các form field hiện có vẫn khả dụng, trường chữ ký tạm thời được gỡ bỏ, và handle có thể được truy vấn hoặc dùng cho một thao tác khác sau khi ký

Chuyển đổi lưu trữ raster PDF/A-4

{
  "schemaVersion": 1,
  "type": "archive.pdfa4.raster",
  "acceptInformationLoss": true,
  "iccProfileFile": "profiles/sRGB.icm",
  "dpi": 150,
  "input": "source.pdf",
  "output": "archive.pdf"
}

Đặt object này vào mảng operations của một file job, hoặc cung cấp trực tiếp qua hpdf_document_execute_json_v1 với handle đã nạp và các callback output nhị phân; C ABI bỏ qua các đường dẫn input/output của file job và dùng adapter của riêng nó

acceptInformationLoss phải là Boolean JSON true, và iccProfileFile phải đặt tên một đường dẫn khác rỗng, không chứa NUL, trỏ tới một ICC profile sRGB matrix/TRC được hỗ trợ trên máy thực thi; đường dẫn profile tương đối được phân giải theo working directory của process

dpi mặc định là 150 và nhận các số nguyên từ 36 đến 1.200; chuyển đổi bao phủ mọi trang nguồn và từ chối mọi thành viên pages

Object kết quả archive báo cáo nativeValidationSucceeded, sourcePages, pagesRendered, rasterPixels, outputBytes, removedAnnotations, removedFormFields, và removedEmbeddedFiles

archive.lossy là true, và mọi cờ trong archive.lossProfile đều false: searchableText, vectorContent, interactiveContent, originalSignatures, annotationAppearances, và structureIdentity

Nội dung trang trở thành các pixel RGB; annotation và appearance widget bị bỏ qua, và chữ ký gốc không được mang vào output. Nguồn đã nạp vẫn khả dụng với documentUpdated: false, kể cả sau khi công bố thất bại; các cài đặt launch, decode, stream-threshold, hủy, và render trước đó được khôi phục

Output nhị phân là bắt buộc, và xác thực PDF/A-4 native phải thành công trước khi bàn giao. Về render, màu, codec, ranh giới source-alias, và tuân thủ, xem chuyển đổi raster PDF/A-4 của tài liệu đã nạp

Ngân sách tài nguyên lưu trữ

Object options tùy chọn nhận các số nguyên dương chính xác để siết các mức chặn hiệu lực dưới đây; key lạ và giá trị vượt một mức chặn sẽ từ chối yêu cầu thay vì tăng ngân sách thao tác

Tùy chọnMặc định và cực đại hiệu lực
maxPagesNhỏ nhất giữa 1.000 và budget.pageCount
maxInputObjectsNhỏ nhất giữa 200.000 và budget.objectCount
maxPixelsPerPageNhỏ nhất giữa 40.000.000, budget.pixels, và memoryBytes / 32
maxTotalPixelsNhỏ nhất giữa 500.000.000, budget.pixels, và memoryBytes / 32
maxRasterBytesNhỏ nhất giữa 256 MiB và memoryBytes / 8
maxOutputBytesNhỏ nhất giữa 256 MiB, budget.outputBytes, và memoryBytes / 8
maxDecodedStreamBytesNhỏ nhất giữa 64 MiB và memoryBytes / 8
maxTotalDecodedBytesNhỏ nhất giữa 256 MiB và memoryBytes / 4

Tệp ICC bị chặn trên tại giá trị nhỏ hơn giữa 4 MiB và memoryBytes / 16 trước khi cấp phát; các hạn ngạch bảo thủ này đã tính đến staging đồng thời, buffer output, dữ liệu ảnh, và công việc decoder, nhưng không thiết lập một giới hạn process-RSS nghiêm ngặt

Hãy tăng các ngân sách job cấp cao nhất khi khối lượng lưu trữ lớn là chủ đích; các options lồng nhau chỉ siết mức chặn hiệu lực, và cực đại native vẫn áp dụng

Các checkpoint lưu trữ thăm dò hủy callback, cancellation token của nguồn mượn, thời gian đã trôi, và số đếm đối tượng trong lúc chuyển đổi. Lỗi ngân sách và hủy giữ nguyên các status code có cấu trúc xuyên suốt converter native

File job

{
  "operations": [
    {"type": "capabilities"},
    {"schemaVersion": 1, "type": "text.extract", "input": "input.pdf",
     "pages": [0, 1], "output": "text.txt"}
  ]
}

THPDFJobProcessor.Execute nhận một mảng operations, tối đa 1.024 thao tác và 4 MiB JSON; các job merge, split, optimise, encrypt, và validate hiện có vẫn khả dụng

Mỗi thao tác tài liệu cung cấp một đường dẫn input và mật khẩu tùy chọn; render, text.replace, forms.fill, forms.flatten, ocr.layer, redact, sign, và archive.pdfa4.raster đòi hỏi một đường dẫn output

Artifact được ghi vào một tệp tạm cạnh đích, được flush và xác thực, rồi được công bố kiểu atomic; thất bại giữ nguyên đích hiện có, và input/output có thể dùng chung một đường dẫn

Hợp đồng callback C

Khởi tạo hpdf_operation_v1 về zero, đặt struct_size bằng kích thước native của nó, abi_version bằng HPDF_ABI_VERSION_1, và flags bằng zero; so sánh kích thước của nó với hpdf_abi_operation_v1_size

Record thao tác mang các byte JSON cùng độ dài chính xác, input random-access tùy chọn, output nhị phân tuần tự tùy chọn, và output kết quả JSON tuần tự bắt buộc

Các callback input, user data, và các byte PDF hỗ trợ phải còn hợp lệ cho đến khi handle bị thay thế hoặc hủy, vì lazy parsing giữ lại adapter

Các callback output/result chỉ tồn tại trong lúc gọi; hãy tuần tự hóa các lời gọi cho từng handle và tránh reentry callback

Callback dùng cdecl, truyền một phần được thử lại, và ghi thành công phải tiến triển dương; exception được chuyển thành các status code cố định

Các thao tác biến đổi chỉ commit sau khi cả artifact lẫn bàn giao kết quả JSON đều thành công; callback thất bại hoặc hủy sẽ rollback các thay đổi, và caller bỏ đi mọi byte đã bàn giao

Input thay thế được nạp trước transaction biến đổi và vẫn là một thay đổi trạng thái riêng biệt

Ngân sách

Object ngân sách tùy chọn nhận các số nguyên dương chính xác không vượt quá 9.007.199.254.740.991

KhóaMặc định
memoryBytes268.435.456
outputBytes134.217.728
resultBytes16.777.216
timeMilliseconds60.000
objectCount1.000.000
pageCount1.024
pixels100.000.000

Các ngân sách output/result chung mỗi loại bị chặn trên tại một nửa ngân sách bộ nhớ; chuyển đổi lưu trữ áp các mức chặn nghiêm ngặt hơn ở trên. Những mức này chặn tài nguyên thao tác đã cấu hình chứ không phải tổng bộ nhớ process

Kiểm tra hủy và thời gian đã trôi mang tính hợp tác tại các checkpoint thao tác, trang, đọc input, và ghi output; một routine native dài có thể tiếp tục cho đến checkpoint kế tiếp của nó

Báo cáo mang schemaVersion, status, và statusCode; lỗi ngân sách dùng status 8, hủy 4, I/O thất bại 5, parse thất bại 6, đối số không hợp lệ 1, và thực thi thất bại 7