Núcleo portátil Linux

O núcleo portátil compila o modelo de objetos existente, o parser de objetos simples, os helpers de I/O de Direct File, o interpretador de content stream, os helpers de valores PDF, o escritor de xref e trailer, o backend Flate e as primitivas AES em programas Linux nativos com Free Pascal

O HPDFPlatform fornece arquivos mapeados POSIX reais e leituras posicionais, criação de arquivos temporários, sincronização de workers e bytes aleatórios do sistema operacional; o adapter do Windows preserva o comportamento nativo existente de arquivos e mapeamento

Escopo de aceitação

O Tests/Linux/Run-PortableCoreTests.sh compila um executável de console ELF x86_64 nativo, limpa as variáveis de display do desktop, verifica dependências de bibliotecas GUI e executa oito grupos de regressões com timeout

As verificações cobrem escapes de parser e referências indiretas, valores PDF invariantes e filtros de stream, janelas mapeadas e offsets de arquivos esparsos acima de 4 GiB, streams de spill assíncronos comprimidos, known answers de Flate e AES, hashes MD5 de arquivos, IVs aleatórios do sistema operacional, serialização clássica válida de xref, contagem de páginas e busca de objetos do Direct File, além de texto e posições de glifos do content stream

O fixture de uma página gerado é escrito pelo writer existente e lido de forma independente por meio dos helpers compartilhados de Direct File; as verificações de conteúdo usam tanto o resolver de identidade Latin-1 existente quanto o resolver de fontes da página com diferenças de encoding e widths explícitos

Dados de fonte e decodificação de texto

O HPDFFontData separa do GDI a decodificação existente de nomes de glifos, encoding e CMap sfnt; a renderização nativa de glifos no Windows e o decodificador HPDFTextExtraction existente usam a mesma implementação

O THPDFTrueTypeData expõe lookup de CMap suportado, mapeamento reverso de glifo para Unicode e avanços horizontais hmtx para uma imagem sfnt de fonte única

O HPDFBaseFontMetrics usa advances canônicos de fontes padrão para doze nomes exatos de Helvetica/Times/Courier e caracteres decodificados suportados, retém o fallback de GDI do Windows e de Fontconfig do Linux para outras fontes, e preserva widths PDF explícitos

Contratos de plataforma e de helpers de fonte

O THPDFPlatformHandle é um handle com largura nativa e sinal, e o HPDFInvalidFileHandle é -1; o HPDFOpenReadOnlyFile e o HPDFCloseFile gerenciam handles de leitura, enquanto o HPDFFileSize e o HPDFReadFileAt usam posições Int64 e os chamadores precisam tratar leituras curtas

O HPDFMappingGranularity fornece o alinhamento de offset exigido; o HPDFCreateReadOnlyMapping retorna zero em caso de falha, o HPDFMapReadOnly mapeia o intervalo solicitado, e o HPDFUnmapReadOnly / HPDFCloseMapping liberam a view e o mapeamento

O HPDFCreateTemporaryFile cria com exclusividade um arquivo cujo caminho e limpeza pertencem ao chamador; o HPDFInitializeLock / HPDFDeleteLock gerenciam seções críticas nativas

O THPDFPlatformEvent é um alias de TEvent; HPDFCreateEvent, HPDFWaitEvent, HPDFSignalEvent e HPDFResetEvent gerenciam a sincronização, e o chamador libera os events depois que o worker para

O HPDFSecureRandomBytes preenche o buffer solicitado a partir do sistema operacional ou lança uma exceção

HPDFGlyphNameToUnicode, HPDFUnicodeToGlyphName, HPDFStdEncGlyphName, HPDFMacExpertEncGlyphName e HPDFBaseEncToUnicode mantêm o comportamento existente de nomes e encoding; o HPDFBaseFontFamilyToken remove sufixos de subset e estilo, enquanto o HPDFIsStandardTextFont reconhece aliases de Helvetica, Times e Courier

O HPDFMeasureBaseFontWidths usa o provider GDI do Windows ou o Fontconfig do Linux e métricas horizontais sfnt compartilhadas; THPDFTrueTypeData e THPDFUnicodeByGID fornecem a API compartilhada de dados de fonte

Tipos compartilhados de Direct File

O HPDFDirectFileTypes é o dono das definições existentes de THPDFKeyType, THPDFProtection, THPDFProtectOptions, THPDFDirectXrefEntry, THPDFDirectObjectSource e THPDFDirectFileState

Essa separação permite que o HPDFDirectFileIO use os mesmos records e tipos de permissão sem importar a implementação do componente e da GUI

O HPDFDoc mantém aliases e constantes de valores de enum sob os nomes originais; os ordinais de enum e os layouts de record permanecem inalterados

Inicialização de programas Linux

Programas nativos em Free Pascal precisam colocar o cthreads primeiro na lista de uses antes de usar worker threads; o teste do núcleo portátil também carrega o cwstring para fornecer o gerenciador de conversão Unicode

Use FPC 3.3.1 ou mais novo com as units FCL e paszlib correspondentes, um runtime C, Fontconfig com fontes TrueType instaladas e as ferramentas file, ldd e timeout; FPC_EXE e HPDF_LINUX_OUTPUT selecionam o compilador e o diretório de saída isolado

A versão mínima suportada do FPC é 3.3.1 em todas as plataformas; nova aceitação registra a build real do compilador e a identidade da origem, enquanto resultados de compiladores mais antigos permanecem evidência histórica

Integrações nativas de documentos

A API nativa headless de documentos carrega grafos classic, xref-stream, hybrid e de objetos comprimidos, resolve recursos de páginas e Forms, extrai texto Unicode, edita campos AcroForm suportados, importa páginas e publica revisões incrementais retendo os bytes da origem

A C ABI versionada do Linux expõe handles de documentos ELF reais e callbacks C síncronos para essas operações nativas; o THotPDF permanece a integração separada de componente Windows

Workflows de documentos nativos fornecem import de HTML, texto de páginas visível e invisível, OCR Tesseract real e conversão para PDF/A-4 raster; imports de páginas e conversão de arquivamento validada de texto/vetores preservam recursos originais, e o reparo explícito de fontes de arquivamento adiciona incorporação delimitada de substitutos

Consulte Tests/Linux/Readme.en-us.md para os contratos dos adapters de plataforma, propriedade dos tipos de Direct File, fronteiras de regressão e links para as evidências de workflows nativos e de implantação

O documento headless agora aceita o profile limitado Standard AES-256 R5/R6 descrito por THPDFHeadlessAES256Security, incluindo permissões de owner/user, objetos comprimidos e saves incrementais de formulários criptografados

Veja renderização nativa Cairo e publicação nativa atômica de assinaturas para dependências de runtime, conteúdo suportado, orçamentos, permissões, identidade de origem e contratos de saída

Aparências de formulários Unicode suportam texto multilinha, células comb, rotações, máscaras de senha e shaping opcional HarfBuzz/FriBidi; APIs nativas separadas lidam com campos choice e button, famílias de fontes fornecidas e rich text tipado com revisões criptografadas preservadas

Workflows de assinatura nativos incluem identidades PEM/PFX, novos campos de assinatura, aparências visíveis e certificação; transporte explícito de timestamps, trust e evidência validada de revogação retêm seus requisitos criptográficos e de publicação documentados

Fronteiras de capacidade restantes

O perfil de segurança do documento headless suporta Standard AES-256 R5/R6; outros security handlers ficam fora desse perfil em vez de se tornarem suportados pelo adapter portable-core

Renderização mais ampla de anotações, CSS/layout geral de rich text, grafos completos de ações e recursos FDF e compatibilidade geral com XFA dinâmico permanecem ativos no plano de conclusão de capacidades; as integrações nativas implementadas acima estão disponíveis independentemente desse trabalho restante