Núcleo portátil Linux
O núcleo portátil compila o modelo de objetos existente, o parser de objetos simples, os auxiliares de I/O Direct File, o intérprete de content streams, os auxiliares de valores PDF, o escritor de xref e trailer, o backend Flate e as primitivas AES em programas nativos Linux com o Free Pascal
HPDFPlatform fornece ficheiros mapeados POSIX reais e leituras posicionais, criação de ficheiros temporários, sincronização de workers e bytes aleatórios do sistema operativo; o adaptador Windows preserva o comportamento nativo existente de ficheiros e de mapeamentos
Âmbito de aceitação
Tests/Linux/Run-PortableCoreTests.sh compila um executável ELF de consola nativo x86_64, limpa as variáveis de ecrã do desktop, verifica dependências de bibliotecas GUI e executa oito grupos de regressões com um timeout
As verificações cobrem escapes do parser e referências indiretas, valores PDF invariantes e filtros de stream, janelas mapeadas e offsets de ficheiros sparse acima de 4 GiB, streams assíncronos comprimidos de spill, respostas conhecidas de Flate e AES, hashes MD5 de ficheiros, IVs aleatórios do sistema operativo, serialização clássica válida de xref, contagens de páginas e pesquisa de objetos Direct File, e posições de texto e glifos de content streams
O fixture gerado de uma página é escrito pelo escritor existente e lido de forma independente através dos auxiliares Direct File partilhados; as verificações de conteúdo usam tanto o resolvedor de identidade Latin-1 existente como o resolvedor de tipos de letra da página com diferenças de encoding e larguras explícitas
Dados de tipos de letra e descodificação de texto
HPDFFontData separa a descodificação existente de nomes de glifos, encoding e CMap sfnt do GDI; a renderização de glifos embebidos no Windows e o descodificador HPDFTextExtraction existente usam a mesma implementação
THPDFTrueTypeData expõe a pesquisa CMap suportada, o mapeamento inverso de glifo para Unicode e os avanços horizontais hmtx para uma imagem sfnt de fonte única
HPDFBaseFontMetrics usa avanços canónicos de tipos de letra standard para doze nomes exatos de Helvetica/Times/Courier e carateres descodificados suportados, retém o fallback de GDI Windows e Fontconfig Linux para outros tipos de letra, e preserva larguras PDF explícitas
Contratos de auxiliares de plataforma e de tipos de letra
THPDFPlatformHandle é um handle nativo com sinal da largura nativa e HPDFInvalidFileHandle é -1; HPDFOpenReadOnlyFile e HPDFCloseFile gerem handles de leitura, enquanto HPDFFileSize e HPDFReadFileAt usam posições Int64 e quem chama tem de tratar leituras curtas
HPDFMappingGranularity fornece o alinhamento de offsets necessário; HPDFCreateReadOnlyMapping devolve zero em caso de falha, HPDFMapReadOnly mapeia o intervalo pedido, e HPDFUnmapReadOnly / HPDFCloseMapping libertam a vista e o mapeamento
HPDFCreateTemporaryFile cria em exclusivo um ficheiro cujo caminho e limpeza pertencem a quem chama; HPDFInitializeLock / HPDFDeleteLock gerem secções críticas nativas
THPDFPlatformEvent é um alias de TEvent; HPDFCreateEvent, HPDFWaitEvent, HPDFSignalEvent e HPDFResetEvent gerem a sincronização, e quem chama liberta os eventos depois de o worker parar
HPDFSecureRandomBytes preenche o buffer pedido a partir do sistema operativo ou lança uma exceção
HPDFGlyphNameToUnicode, HPDFUnicodeToGlyphName, HPDFStdEncGlyphName, HPDFMacExpertEncGlyphName e HPDFBaseEncToUnicode mantêm o comportamento existente de nomes e encodings; HPDFBaseFontFamilyToken remove sufixos de subset e de estilo, enquanto HPDFIsStandardTextFont reconhece aliases de Helvetica, Times e Courier
HPDFMeasureBaseFontWidths usa o fornecedor GDI do Windows ou o Fontconfig em Linux e métricas horizontais sfnt partilhadas; THPDFTrueTypeData e THPDFUnicodeByGID fornecem a API partilhada de dados de tipos de letra
Tipos Direct File partilhados
HPDFDirectFileTypes detém as definições existentes de THPDFKeyType, THPDFProtection, THPDFProtectOptions, THPDFDirectXrefEntry, THPDFDirectObjectSource e THPDFDirectFileState
Esta separação permite ao HPDFDirectFileIO usar os mesmos registos e tipos de permissões sem importar a implementação do componente e da GUI
HPDFDoc mantém aliases e constantes de valores de enum sob os nomes originais; os ordinais de enum e os layouts de registos ficam inalterados
Inicialização de programas Linux
Programas nativos Free Pascal têm de colocar cthreads em primeiro lugar na lista de uses antes de usar worker threads; o teste do núcleo portátil também carrega cwstring para fornecer o gestor de conversão Unicode
Use o FPC 3.3.1 ou mais recente com as unidades FCL e paszlib correspondentes, um runtime C, Fontconfig com tipos de letra TrueType instalados 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; a nova aceitação regista a build real do compilador e a identidade da fonte, 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 fonte
A ABI C versionada de Linux expõe handles de documentos ELF reais e callbacks C síncronos para estas operações nativas; o THotPDF permanece a integração separada do componente Windows
Workflows de documentos nativos fornecem importação de HTML, texto de páginas visível e invisível, OCR Tesseract real e conversão para PDF/A-4 raster; as importações de páginas e a conversão de arquivamento validada de texto/vetores preservam recursos originais, e o reparo explícito de tipos de letra de arquivamento acrescenta incorporação delimitada de substitutos
Veja Tests/Linux/Readme.en-us.md para os contratos dos adapters de plataforma, a posse dos tipos de Direct File, as fronteiras de regressão e as ligações para as evidências de workflows nativos e de implantação
O documento headless aceita hoje o perfil delimitado Standard AES-256 R5/R6 descrito por THPDFHeadlessAES256Security, incluindo permissões owner/user, objetos comprimidos e saves incrementais de formulários cifrados
Veja a renderização nativa Cairo e a publicação nativa atómica de assinaturas para dependências de runtime, conteúdo suportado, budgets, permissões, identidade da fonte e contratos de saída
Aparências de formulários Unicode suportam texto multilinha, células comb, rotações, máscaras de palavra-passe e shaping opcional HarfBuzz/FriBidi; APIs nativas separadas tratam campos choice e button, famílias de tipos de letra fornecidas e rich text tipado com revisões cifradas preservadas
Workflows nativos de assinatura incluem identidades PEM/PFX, novos campos de assinatura, aparências visíveis e certificação; o transporte explícito de timestamps, o trust e a evidência validada de revogação retêm os 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 através do adapter portable-core
A renderização mais ampla de anotações, o CSS/layout geral de rich text, grafos completos de ações e recursos FDF e a 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