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