Сравнение договоров в нативном Linux
hpdf_document_compare_json_v1 берёт два дескриптора загруженных документов и запускает нативное семантическое сравнение договоров или общее сравнение документов с подготовленным выводом через колбэки
{"schemaVersion":1,"type":"compare.contract","format":"html",
"title":"Contract review","options":{"granularity":"word",
"ignoreRepeatedHeadersFooters":true,"maxAlignmentCells":2000000},
"limits":{"memoryBytes":268435456,"resultBytes":4194304,"outputBytes":8388608}}
Семантические отчёты по договорам
Нативный адаптер использует тот же переносимый алгоритм выравнивания абзацев и поиска различий, что и контрактный API Windows, включая изменения слов или предложений, перемещения между страницами, исключение повторяющихся полей, фильтры шаблонного текста и продолжения страниц
Отчёты по договорам включают comparisonComplete, identical, differenceCount, счётчики страниц и абзацев, исключения, счётчики работы и выравнивания, а для каждого изменения — текст, контекст и позиции
Каждая позиция содержит страницу и абзац с нуля, смещение символа с единицы, число символов и прямоугольники пользовательского пространства PDF, покрывающие пересекающиеся семантические строки; прямоугольники представляют геометрию строк
Нативное извлечение глифов сохраняет вложенные ресурсы Form и матрицы, унаследованные границы страниц и права извлечения для plain-text и аутентифицированных входов AES R5/R6; страницы без извлекаемого текста сообщают об ошибке извлечения и требуют OCR или явного удаления пустых страниц
Опции и лимиты
options принимает granularity (word или sentence), ignoreCase, ignoreRepeatedHeadersFooters, normalizeMarginDigits, joinPageContinuations, headerMarginPoints, footerMarginPoints, paragraphGapFactor, minimumParagraphSimilarity, minimumRepeatedPages и excludedLineTexts
Явные положительные целые лимиты включают maxPages, maxParagraphs, maxSemanticLines, maxCharacters, maxTokens, maxDifferences, maxAlignmentCells и maxWorkUnits; бюджеты памяти и результата операции ограничивают эти лимиты до выполнения
compare принимает режимы по числу страниц, тексту страниц, числу объектов, отрисованным изображениям, структуре и полный, с выводом JSON; доступные режимы узнавайте через comparisonModes, а контрактные форматы — через contractFormats
format:json пишет результирующий JSON и в необязательный бинарный колбэк, и в обязательный result-колбэк; format:html требует бинарный колбэк и пишет автономный UTF-8-обзор с экранированными заголовком и формулировками договора
format:pdf требует бинарных output-колбэков и создаёт настоящую аннотированную копию для рецензии с side:before или side:after, по умолчанию after; options.maxHighlights ограничивает подсвеченные семантические строки
Время жизни и публикация
Держите оба дескриптора живыми на время вызова; сравнение дескриптора с самим собой поддерживается, а конкурентные сравнения в обратном порядке захватывают блокировки в стабильном порядке
Все колбэки выполняются синхронно на вызывающем потоке; ресурсные лимиты временно применяются к каждому загруженному документу и восстанавливаются потом, включая пути сбоев и отмены
Вызов не принимает input-колбэк или члены путей к файлам и сохраняет оба исходных документа и их ревизии; бинарный и JSON-вывод подготавливаются и ограничиваются до начала публикации
Интерфейс Pascal
HPDFCompareHeadlessContracts принимает два объекта THPDFHeadlessDocument с существующими THPDFContractCompareOptions и возвращает THPDFContractCompareReport
HPDFHeadlessContractSource открывает нативный адаптер; HPDFCompareContractSources в HPDFContractCompareCore принимает собственные ограниченные колбэки числа страниц, семантических страниц и видимого бокса для переносимого ядра
HPDFContractCompareCore владеет общим алгоритмом, типами отчётов и HTML-рендерером без зависимостей от VCL или LCL; существующий Windows-интерфейс HPDFContractCompare сохраняет свои типы, константы и точки входа загруженных документов через алиасы и адаптеры
THPDFHeadlessDocument.ExtractPageGlyphs и AnalyzePageSemanticText открывают позиционированные глифы и семантическую раскладку через тот же обходчик вложенного содержимого, что и ExtractPageText
Приёмка нативного ABI проверяет фактические сравнения plain-text, AES R5/R6 и вложенных Form, rollback, бюджеты и порядок блокировок; независимые читалки pypdf и MuPDF проверяют полные различия, точные контексты, смещения и геометрию исходных глифов
Нативный C ABI в Linux · Сравнение договоров · План завершения оставшихся возможностей