Configuração de trabalho JSON

THPDFJobProcessor aceita um documento JSON que descreve operações PDF ordenadas e retorna um resultado JSON com status por operação

Operações suportadas

merge combina vários PDFs de entrada em um único arquivo de saída usando AppendPagesFromDocument

split extrai intervalos de páginas de um PDF de entrada em arquivos de saída separados usando ExtractLoadedPagesToPDF

optimise recompacta fluxos FlateDecode e LZWDecode com um limite mínimo de economia

encrypt aplica criptografia AES-256, AES-128, RC4-128 ou RC4-40 com senhas e tipo de chave especificados pelo chamador

validate executa uma política de validação integrada e retorna o texto do relatório

ocr.layer cria texto pesquisável pela engine ASCII embutida padrão ou por adapters locais Tesseract/RapidOCR de CLI e DLL explicitamente configurados; veja a configuração de jobs de OCR externos

Esquema JSON

A entrada precisa conter um valor JSON completo com separadores válidos, contêineres fechados, escapes de string válidos e apenas whitespace JSON fora de strings; conteúdo à direita e números fora da faixa finita de Double são rejeitados

O parser aceita no máximo 64 níveis aninhados de valores, contando o valor raiz como o primeiro nível; trabalhos malformados ou aninhados demais falham antes de qualquer operação rodar, e os valores parcialmente parseados são liberados

A entrada é um objeto com um array operations; cada operação tem um campo type e parâmetros específicos do tipo

A saída é um objeto com um array results; cada resultado carrega type, status (ok, error ou skipped) e campos específicos da operação

Valores de string preservam caracteres Unicode escapados, incluindo \u0000; números finitos usam um ponto decimal independente de locale e podem ser serializados fora da faixa de 64 bits com sinal

Valores numéricos são armazenados como Double e seguem a precisão de conversão de ponto flutuante do runtime do compilador, então inteiros além da faixa exata de inteiros dele podem ser arredondados na entrada; GetInt e GetInt64 retornam o padrão fornecido quando o valor arredondado fica fora da faixa de inteiros com sinal deles

Orçamentos por operação

Toda operação pode conter um objeto budget com limites memoryBytes, timeMilliseconds, objectCount, decompressionRatio e outputBytes

{"operations":[{"type":"optimise","input":"in.pdf","output":"out.pdf",
  "budget":{"memoryBytes":268435456,"timeMilliseconds":30000,
  "objectCount":1000000,"decompressionRatio":200,"outputBytes":1073741824}}]}

Uma violação de limite retorna status=budget-exceeded além de metric, observed, limit e elapsedMilliseconds sem abortar operações posteriores

Orçamentos de memória também são aplicados à contabilidade de decodificação por fluxo e por documento para que a expansão seja limitada antes que buffers grandes sejam retidos

API de identificador opaco

HPDFDocCreate retorna um THPDFDocHandle opaco envolvendo uma instância THotPDF; HPDFDocLoadFromFile, HPDFDocGetPageCount, HPDFDocSaveLoadedDocument e HPDFDocRunJob operam no identificador; HPDFDocDestroy o libera

Esses auxiliares Pascal compatíveis com a fonte permanecem disponíveis para chamadores Delphi e C++Builder

ABI estável de retorno de chamada C do HotPDF fornece o limite C versionado plano para entrada de acesso aleatório, saída em fluxo, cancelamento, progresso, diagnósticos e ciclo de vida de identificador opaco