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ào | Kết quả |
|---|---|---|
| info | Tài liệu đã nạp | Số đếm trang, đối tượng, form, và trường chữ ký |
| render | page, dpi (18–1.200), format (png) | Artifact PNG và kích thước |
| export.structured | pages, format, options | Artifact HTML/XHTML/XML/JSON ngữ nghĩa và telemetry xuất |
| tables.export | pages, format, options | Artifact CSV/JSON/XLSX có kiểu và telemetry bảng/ô/header |
| text.extract | pages, layout tùy chọn | Văn bản trang Unicode và artifact văn bản UTF-8 tùy chọn |
| text.replace | pages, needle, replacement, matchCase | Số đếm khớp/đã thay thế/đã bỏ qua theo từng trang và artifact PDF tùy chọn |
| forms.read | Tài liệu đã nạp | Tên, giá trị Unicode đã giải mã, và kiểu trường native |
| forms.fill | mảng fields với các chuỗi name/value | Cập nhật atomic; tên lạ hoặc trùng sẽ từ chối thao tác |
| forms.flatten | Tài liệu đã nạp | Số đã flatten và các trường còn lại |
| ocr.layer | pages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExisting | PDF tìm kiếm được và số đếm từ được nhận/bị bỏ |
| redact | burnIn: true, các hình chữ nhật với page/x1/y1/x2/y2 | Số redaction đã áp dụng và artifact PDF |
| sign | pfxFile, pfxPassword, page, fieldName, hình chữ nhật tùy chọn và contentsBytes | Artifact PDF đã ký PFX |
| archive.pdfa4.raster | acceptInformationLoss: true, iccProfileFile, dpi và options tùy chọn | Artifact 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ọn | Mặc định và cực đại hiệu lực |
|---|---|
| maxPages | Nhỏ nhất giữa 1.000 và budget.pageCount |
| maxInputObjects | Nhỏ nhất giữa 200.000 và budget.objectCount |
| maxPixelsPerPage | Nhỏ nhất giữa 40.000.000, budget.pixels, và memoryBytes / 32 |
| maxTotalPixels | Nhỏ nhất giữa 500.000.000, budget.pixels, và memoryBytes / 32 |
| maxRasterBytes | Nhỏ nhất giữa 256 MiB và memoryBytes / 8 |
| maxOutputBytes | Nhỏ nhất giữa 256 MiB, budget.outputBytes, và memoryBytes / 8 |
| maxDecodedStreamBytes | Nhỏ nhất giữa 64 MiB và memoryBytes / 8 |
| maxTotalDecodedBytes | Nhỏ 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óa | Mặc định |
|---|---|
| memoryBytes | 268.435.456 |
| outputBytes | 134.217.728 |
| resultBytes | 16.777.216 |
| timeMilliseconds | 60.000 |
| objectCount | 1.000.000 |
| pageCount | 1.024 |
| pixels | 100.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