Linux y macOS nativos
El back-end nativo de FPC admite flujos de trabajo de biblioteca headless en Linux x64 y macOS ARM64, produciendo programas ELF y Mach-O reales
Use la API existente de TPDFlib para creación de PDF, guardado/carga, extracción y edición de texto, extracción estructurada, devoluciones de llamada de OCR portátiles, renderizado de mapas de bits, metadatos, cifrado, acceso por rangos de red y firma PFX nativa
Dependencias en tiempo de ejecución
| Proveedor | Biblioteca | Propósito |
|---|---|---|
| OpenSSL 3 | libcrypto | AES CBC/GCM, digests, identidades PKCS12, firmas CMS, integridad y cadenas de anclas de confianza explícitas |
| libcurl | libcurl con DNS asíncrono | HTTP/HTTPS, transporte binario acotado, acceso por rangos y solicitudes RFC 3161 |
| Cairo | libcairo | Superficies de imagen de mapas de bits, trazados, recorte, contornos de glifos e imágenes |
| Fontconfig | libfontconfig | Coincidencia real de archivos de fuentes nativas, incluida la sustitución explícita de familia |
| OpenJPEG 2 | libopenjp2 | Decodificación y codificación JPEG 2000 |
Linux carga los SONAME del sistema correspondientes; macOS usa bibliotecas ARM64 bajo /opt/homebrew y el libcurl del sistema
Las bibliotecas o símbolos faltantes y las operaciones no compatibles producen fallos explícitos; no se usa ningún sustituto del contexto de dispositivo de Windows
Firmas y marcas de tiempo
El proveedor PFX predeterminado admite identidades RSA y EC reales, CMS detached, CAdES y perfiles adjuntos SHA1 heredados; la verificación comprueba los bytes de ByteRange del PDF y la firma CMS
La verificación de la cadena de certificados requiere anclas de confianza explícitas; los certificados incrustados no otorgan confianza, y la integridad por sí sola no implica confianza
ApplyPAdESSignatureTimeStamp usa 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 huella del mensaje, el EKU timeStamping crítico exclusivo, el nombre de la TSA, la política/nonce esperada opcional y la cadena de certificados confiable en el momento de la generación del token
Las marcas de tiempo del documento también verifican la huella real del ByteRange del PDF; el llamador puede usar el flujo de trabajo de paso directo DocTimeStamp existente y suministrar el token
Metadatos y renderizado
XMP usa un DOM real consciente de espacios de nombres y conserva las propiedades no relacionadas durante las ediciones
El lector XML rechaza las declaraciones DTD independientemente de la codificación de origen; los caracteres de entrada y decodificados están acotados, y una pasada en flujo limita la profundidad y los eventos de nodo antes de construir el DOM
El renderizado usa almacenamiento de mapas de bits nativo real y superficies de imagen de Cairo; el renderizado por bandas conserva las coordenadas del espacio de dispositivo y usa filas de guarda para mantener el antialiasing de los límites consistente
La incrustación nativa de fuentes de familia resuelve un archivo real de Fontconfig e incrusta un programa TrueType completo autónomo con CIDFontType2, Identity CIDToGIDMap, métricas inicializadas y anchos Unicode; el texto BMP y las capas OCR portátiles sobreviven al guardado y recarga del PDF
La entrada rechaza fuentes de familia no incrustadas, colecciones, programas CFF y 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 la creación de subconjuntos permanecen como programas completos
Límites
- Los contextos de dispositivo de Windows, EMF, GUI, portapapeles e impresión están fuera del back-end headless nativo
- La conformación de texto nativa compleja y las identidades del almacén de certificados de Windows no están disponibles
- La entrada de incrustación TrueType autónoma actualmente admite texto BMP; el texto del plano complementario, la extracción de caras TTC y la incrustación CFF están fuera de esta entrada
- La revocación OCSP/CRL en línea no está disponible; las solicitudes de verificación de revocación reportan un resultado desconocido
- El proveedor PFX nativo predeterminado rechaza RSA-PSS y atributos adicionales de firma 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 soporte de DNS asíncrono en libcurl para respetar los tiempos de espera de consulta 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 explícita del compilador; el runner no cambia la configuración global del compilador ni agrega -FcUTF8
La suite comprueba los formatos ejecutables nativos reales y escribe un informe JSON con versiones de compilador y dependencias, hashes de código fuente, hashes de ejecutables, resultados y límites
Los fixtures incluidos en Tests/Native cubren guardado/recarga/renderizado de PDF, flujos de trabajo de texto, cifrado, metadatos, firmas, tráfico real HTTP/TSA y casos negativos de seguridad