Native Linux and macOS
O backend nativo FPC suporta fluxos de biblioteca headless no Linux x64 e no macOS ARM64, produzindo programas ELF e Mach-O reais
Use a API TPDFlib existente para criação de PDF, salvar/carregar, extração e edição de texto, extração estruturada, callbacks portáteis de OCR, renderização de bitmap, metadados, criptografia, acesso a ranges de rede e assinatura PFX nativa
Dependências de runtime
| Provider | Biblioteca | Finalidade |
|---|---|---|
| OpenSSL 3 | libcrypto | AES CBC/GCM, digests, identidades PKCS12, assinaturas CMS, integridade e cadeias explícitas de âncoras de confiança |
| libcurl | libcurl com DNS assíncrono | HTTP/HTTPS, transporte binário limitado, acesso a ranges e requisições RFC 3161 |
| Cairo | libcairo | Superfícies de imagem bitmap, caminhos, clipping, contornos de glifos e imagens |
| Fontconfig | libfontconfig | Correspondência real com arquivos de fonte nativos, incluindo substituição explícita de família |
| OpenJPEG 2 | libopenjp2 | Decodificação e codificação JPEG 2000 |
O Linux carrega os SONAMEs de sistema correspondentes; o macOS usa bibliotecas ARM64 sob /opt/homebrew e o libcurl do sistema
Bibliotecas ou símbolos ausentes, ou operações não suportadas, produzem falhas explícitas; nenhum substituto de device context do Windows é usado
Assinaturas e carimbos de tempo
O provider PFX padrão suporta identidades RSA e EC reais, CMS detached, CAdES e perfis legados attached com SHA1; a verificação checa os bytes do ByteRange do PDF e a assinatura CMS
A verificação de cadeia de certificados exige âncoras de confiança explícitas; certificados embutidos não concedem confiança, e só a integridade não implica confiança
A ApplyPAdESSignatureTimeStamp usa o transporte HTTP nativo padrão configurado para buscar e anexar um token RFC 3161 real; reserve capacidade suficiente de /Contents antes da assinatura original
A verificação de carimbo de tempo checa o token assinado, o message imprint, o EKU timeStamping crítico exclusivo, o nome da TSA, a política/nonce esperada opcional e a cadeia de certificados confiável no momento da geração do token
Carimbos de tempo de documento também verificam o imprint real do ByteRange do PDF; quem chama pode usar o fluxo passthrough DocTimeStamp existente e fornecer o token
Metadados e renderização
O XMP usa um DOM real com consciência de namespace e preserva propriedades não relacionadas durante edições
Declarações DTD são rejeitadas pelo leitor de XML independentemente da codificação da origem; os caracteres de entrada e decodificados são limitados, e uma passada em streaming limita a profundidade e os eventos de nó antes de construir o DOM
A renderização usa armazenamento de bitmap nativo real e superfícies de imagem do Cairo; a renderização em faixas preserva coordenadas do espaço do dispositivo e usa linhas de guarda para manter o antialiasing de fronteira consistente
A incorporação nativa de fontes de família resolve um arquivo Fontconfig real e incorpora um programa TrueType completo e independente com CIDFontType2, CIDToGIDMap Identity, métricas inicializadas e larguras Unicode; texto BMP e camadas de OCR portáteis sobrevivem a salvar/recarregar o PDF
A entrada rejeita fontes de família não incorporadas, coleções, programas CFF e direitos de incorporação somente bitmap; incorporação restrita exige o override explícito de direitos existente, e fontes que proíbem subsetting permanecem programas completos
Limites
- Device contexts do Windows, EMF, GUI, clipboard e impressão ficam fora do backend headless nativo
- Modelagem de texto nativa complexa e identidades do repositório de certificados do Windows não estão disponíveis
- A entrada de incorporação TrueType independente atualmente suporta texto BMP; texto do plano suplementar, extração de face de TTC e incorporação CFF ficam fora desta entrada
- Revogação OCSP/CRL online não está disponível; pedidos de verificação de revogação reportam um resultado desconhecido
- O provider PFX nativo padrão rejeita RSA-PSS e atributos extras de política, de comprometimento ou de assinatura de revogação
- Transformações nativas CMYK/ICC e gravação de BMP indexado de um bit não estão disponíveis
- HTTP exige suporte a DNS assíncrono no libcurl para honrar timeouts de consulta DNS
Build e verificação
python3 Tests/Native/run_native_tests.py --compiler /path/to/fpc --output /tmp/pdflib-native-tests
Passe --config /path/to/fpc.cfg para uma configuração explícita do compilador; o runner não muda configurações globais do compilador nem adiciona -FcUTF8
A suíte checa os formatos reais dos executáveis nativos e grava um relatório JSON com versões de compilador/dependências, hashes de fontes, hashes de executáveis, resultados e limites
Os fixtures Tests/Native do repositório cobrem salvar/recarregar/renderizar PDF, fluxos de texto, criptografia, metadados, assinaturas, tráfego HTTP/TSA real e casos negativos de segurança