JSON- og C ABI-dokumentsammenligning

Sammenlign to indlæste dokumenter gennem THPDFJobProcessor.ExecuteLoadedOperationWithComparison, to C ABI-handles gennem hpdf_document_compare_json_v1 eller to filer gennem JSON-jobprocessoren

Generiske modes

type=compare accepterer mode-værdierne pageCount, pageText, objectCount, renderedImage, full og structural; standarden er structural

Modesne beholder den native THPDFDocComparison-adfærd, inklusive sidejustering og strukturelle objektsignaturer; objectCount sammenligner også side- og objektstruktur

{
  "schemaVersion": 1,
  "type": "compare",
  "mode": "full",
  "render": {"dpi": 72, "colorSpace": "rgb", "colorTolerance": 8},
  "options": {"maxDifferences": 1000, "maxStreamBytes": 1048576},
  "budget": {"memoryBytes": 268435456, "resultBytes": 16777216,
             "outputBytes": 67108864, "timeMilliseconds": 60000, "pixels": 10000000}
}

Resultatkonvolutten inkluderer comparison, comparisonComplete, identical, documentUpdated=false, forløbet tid og outputstørrelse; valgfrit binært output indeholder sammenlignings-JSON uden konvolut

Traversal-, stream-, værdi-, tilbageholdt-forskel- og renderingsgrænser giver status=incomplete, comparisonComplete=false og identical=false, selv når det inspicerede delsæt er ens

Kontraktgennemgang

type=compare.contract justerer afsnit, detekterer flytning og rapporterer ord- eller sætningsindsættelser, sletninger og erstatninger med både kontekster og lokationer

{
  "schemaVersion": 1,
  "type": "compare.contract",
  "format": "pdf",
  "side": "after",
  "options": {"granularity": "word", "ignoreRepeatedHeadersFooters": true,
              "excludedLineTexts": ["CONFIDENTIAL COPY"], "maxWorkUnits": 50000000}
}

format accepterer json, html eller pdf; JSON er standarden, og HTML eller PDF kræver en outputstream eller callback

Ændringskinds er insert, delete, replace og move; side- og afsnitsindeks er nul-baserede, tegnstarter er ét-baserede UTF-16-positioner, og rektangler dækker semantiske linjer i PDF user space snarere end eksakte glyph-firkanter

PDF vælger side=before eller side=after, verificerer det valgte dokument mod hvert semantisk side-snapshot, tilføjer highlights og Before/After-kommentarer, gemmer en review-kopi og ruller altid kildegraf-transaktionen tilbage

En review-PDF er en fuld omskrivning og kræver separat signaturverifikation; sammenligningen efterlader de lånte kildedokumenter og deres signaturer uændret

Options og grænser

Generiske options accepterer maxObjects, maxEdges, maxPages, maxDepth, maxDifferences, maxStreamBytes, maxTotalStreamBytes, maxValueBytes og maxPathBytes

Rendering accepterer dpi, colorSpace (rgb eller luminance), colorTolerance, minimumSimilarity, maxChangedPixelRatio, tileSize og maxChangedRegions; callback-operationer skriver ikke heatmaps til filsystemet

Kontrakt-options accepterer de booleske, margin-, ligheds-, boilerplate- og ressourcefelter fra THPDFContractCompareOptions med camelCase-navne; granularity er word eller sentence

Delte budgetter er memoryBytes, outputBytes, resultBytes, timeMilliseconds, pixels, objectCount og pageCount; options klemmes til disse budgetter

Hukommelsesbudgetter allokerer konservative rationer til begge dekodestier, renderingspixels, justeringslager og privat output; de er arbejdsbyrdegrænser snarere end et operativsystem-RSS-loft, og allerede indlæste objektgrafer forbliver kalder-ejet

JSON-allokering tjekkes med et konservativt escaped-størrelsesestimat, som kan afvise et resultat, hvis endelige UTF-8-repræsentation ville passe; HTML bruger en konservativ tegnration inden for output-byte-budgettet

Budgetfejl returnerer ABI-status 8, og cancellation returnerer status 4; cancellation er kooperativ ved side-, objekt-, streamblok-, renderingsobjekt-, pixelrække- og justeringsgrænser

C ABI-fejlkontrolkonvolutten har et uafhængigt maksimum på 8 KiB og afklipper detaljer til 1.024 UTF-16 code units, hvilket tillader, at en budgetfejl rapporteres, når det anmodede resultatbudget er for lille til en fejlrespons

Lånte C ABI-handles

Indlæs hvert handle med dets egen hpdf_io_v1-kilde og kald hpdf_document_compare_json_v1(handle_a, handle_b, operation); ABI v1 record-layouts og den originale execute-eksport forbliver uændret

operation.input_io skal være NULL, result_io skal levere write, og valgfri output_io leverer artefaktet; JSON filnøglerne input, otherInput og output afvises

Begge uafhængige kilder må returnere korte random access-læsninger, og begge cancellation-callbacks polles, selv når deres dekodede objekter er cachet; samme handle må sendes to gange til selvsammenligning

Hold input-callbacks og deres kontekster i live for handle-levetiden og aktive kald, og serialisér operationer på hvert handle; handle-referencer tilbageholdes, indtil sammenligningen returnerer

Artefakter bygges og valideres i private afgrænsede buffere inden callback-publicering; callbacks, der fejler under publicering, kan beholde allerede accepterede bytes, mens kildedokumenterne forbliver uændret

Filbaserede jobs

{"jobs":[
  {"schemaVersion":1,"type":"compare.contract","input":"before.pdf",
   "otherInput":"after.pdf","format":"html","output":"review.html"}]}

password og otherPassword låser de to filer uafhængigt op; JSON-output må udelade en outputsti og forblive i resultatkonvolutten

Outputstier må afvige fra begge kildefiler, inklusive eksisterende hard-link-aliasser; en midlertidig fil i destinationsmappen flushes og publiceres atomisk, efter alle tjek består, og bevarer en eksisterende output ved fejl

Relaterede emner

Dokumentsammenligning · Kontraktsammenligning · Annoteret stream-eksport