Linux y macOS nativos
El backend nativo de FPC admite flujos de trabajo headless de la biblioteca en Linux x64 y macOS ARM64, produciendo programas ELF y Mach-O reales
Utilice la API existente de TPDFlib para la creación de PDF, el guardado y la carga, la extracción y edición de texto, la extracción estructurada, las devoluciones de llamada de OCR portátiles, la renderización de mapas de bits, los metadatos, el cifrado, el acceso a la red por intervalos y la firma PFX nativa
Dependencias en tiempo de ejecución
| Proveedor | Biblioteca | Propósito |
|---|---|---|
| OpenSSL 3 | libcrypto | AES CBC/GCM, resúmenes, identidades PKCS12, firmas CMS, integridad y cadenas de anclajes de confianza explícitas |
| libcurl | libcurl con DNS asíncrono | HTTP/HTTPS, transporte binario acotado, acceso por intervalos y peticiones RFC 3161 |
| Cairo | libcairo | Superficies de imagen de mapa de bits, trazados, recortes, contornos de glifos e imágenes |
| Fontconfig | libfontconfig | Emparejamiento real con archivos de fuentes nativas, incluida la sustitución explícita de familias |
| OpenJPEG 2 | libopenjp2 | Descodificación y codificación JPEG 2000 |
Linux carga los SONAME del sistema correspondientes; macOS utiliza las bibliotecas ARM64 bajo /opt/homebrew y el libcurl del sistema
Las bibliotecas o símbolos ausentes y las operaciones no admitidas producen fallos explícitos; no se utiliza ningún sustituto del contexto de dispositivo de Windows
Firma y marcas de tiempo
El proveedor PFX predeterminado admite identidades reales de RSA y EC, CMS detached, CAdES y los perfiles heredados con SHA1 adjunto; la verificación comprueba los bytes del ByteRange del PDF y la firma CMS
La verificación de la cadena de certificados requiere anclajes de confianza explícitos; los certificados incrustados no otorgan confianza, y la integridad por sí sola no implica confianza
ApplyPAdESSignatureTimeStamp utiliza el transporte HTTP nativo predeterminado configurado para obtener y adjuntar un token RFC 3161 real; reserve suficiente capacidad de /Contents antes de la firma original
La verificación de la marca de tiempo comprueba el token firmado, la impresión del mensaje, el EKU timeStamping crítico exclusivo, el nombre de la TSA, la política/nonce esperados opcionales y la cadena de certificados de confianza en el momento de la generación del token
Las marcas de tiempo del documento también verifican la impresión real del ByteRange del PDF; quien llama puede utilizar el flujo de trabajo passthrough DocTimeStamp existente y suministrar el token
Metadatos y renderización
XMP utiliza un DOM real consciente de los espacios de nombres y conserva las propiedades no relacionadas durante las ediciones
El lector XML rechaza las declaraciones DTD sea cual sea la codificación de origen; los caracteres de entrada y descodificados están acotados, y una pasada en streaming limita la profundidad y los eventos de nodo antes de construir el DOM
La renderización utiliza almacenamiento real de mapas de bits nativo y superficies de imagen de Cairo; la renderización por franjas conserva las coordenadas del espacio de dispositivo y utiliza filas de guarda para mantener un suavizado coherente en los límites
La incrustación nativa de fuentes de familia resuelve un archivo Fontconfig real e incrusta un programa TrueType independiente completo con CIDFontType2, CIDToGIDMap Identity, métricas inicializadas y anchuras Unicode; el texto BMP y las capas de OCR portátiles sobreviven al guardado y la recarga del PDF
La entrada rechaza las fuentes de familia no incrustadas, las colecciones, los programas CFF y los derechos de incrustación de solo mapa de bits; la incrustación restringida requiere la anulación explícita de derechos existente, y las fuentes que prohíben los subconjuntos siguen siendo programas completos
Límites
- Los contextos de dispositivo de Windows, EMF, la GUI, el portapapeles y la impresión quedan fuera del backend nativo headless
- El modelado complejo de texto nativo y las identidades del almacén de certificados del sistema de Windows no están disponibles
- La entrada de incrustación TrueType independiente admite actualmente texto BMP; el texto de planos suplementarios, la extracción de caras TTC y la incrustación CFF quedan fuera de esta entrada
- La revocación OCSP/CRL en línea no está disponible; las peticiones de verificación de revocación informan de un resultado desconocido
- El proveedor PFX nativo predeterminado rechaza RSA-PSS y los atributos de firma adicionales de política, compromiso o revocación
- Las transformaciones nativas CMYK/ICC y la escritura BMP indexada de un bit no están disponibles
- HTTP requiere compatibilidad con DNS asíncrono en libcurl para respetar los tiempos de espera de búsqueda de DNS
Compilación y verificación
python3 Tests/Native/run_native_tests.py --compiler /path/to/fpc --output /tmp/pdflib-native-tests
Pase --config /path/to/fpc.cfg para una configuración de compilador explícita; el runner no cambia los ajustes globales del compilador ni añade -FcUTF8
La suite comprueba los formatos reales de los ejecutables nativos y escribe un informe JSON con versiones del compilador y de las dependencias, hashes de fuentes, hashes de ejecutables, resultados y límites
Los Tests/Native del repositorio cubren el guardado, la recarga y la renderización de PDF, los flujos de texto, el cifrado, los metadatos, las firmas, el tráfico HTTP/TSA real y los casos negativos de seguridad