Linux e macOS nativi
Il backend FPC nativo supporta i workflow headless della libreria su Linux x64 e macOS ARM64, producendo veri programmi ELF e Mach-O
Usa la consueta API TPDFlib per creazione PDF, salvataggio/caricamento, estrazione e modifica del testo, estrazione strutturata, callback OCR portabili, rendering bitmap, metadati, crittografia, accesso a intervalli di rete e firma PFX nativa
Dipendenze a runtime
| Provider | Libreria | Scopo |
|---|---|---|
| OpenSSL 3 | libcrypto | AES CBC/GCM, digest, identità PKCS12, firme CMS, integrità e catene esplicite di ancore di attendibilità |
| libcurl | libcurl con DNS asincrono | HTTP/HTTPS, trasporto binario delimitato, accesso a intervalli e richieste RFC 3161 |
| Cairo | libcairo | Superfici immagine bitmap, tracciati, ritaglio, contorni dei glifi e immagini |
| Fontconfig | libfontconfig | Abbinamento reale dei file font nativi, inclusa la sostituzione esplicita di famiglia |
| OpenJPEG 2 | libopenjp2 | Decodifica e codifica JPEG 2000 |
Linux carica i corrispondenti SONAME di sistema; macOS usa le librerie ARM64 sotto /opt/homebrew e il libcurl di sistema
Librerie o simboli mancanti o operazioni non supportate producono fallimenti espliciti; non viene usato alcun sostituto del device context Windows
Firme e timestamp
Il provider PFX predefinito supporta vere identità RSA ed EC, CMS detached, CAdES e profili legacy attached SHA1; la verifica controlla i byte del ByteRange PDF e la firma CMS
La verifica della catena di certificati richiede esplicite ancore di attendibilità; i certificati incorporati non concedono attendibilità, e l'integrità da sola non implica attendibilità
ApplyPAdESSignatureTimeStamp usa il trasporto HTTP nativo predefinito configurato per recuperare e allegare un vero token RFC 3161; riserva capacità /Contents sufficiente prima della firma originale
La verifica del timestamp controlla il token firmato, l'impronta del messaggio, l'EKU timeStamping critical esclusivo, il nome della TSA, la policy/nonce attesa opzionale e la catena di certificati fidata al momento della generazione del token
I timestamp del documento verificano anche l'impronta effettiva del ByteRange PDF; il chiamante può usare il consueto workflow di passthrough DocTimeStamp e fornire il token
Metadati e rendering
XMP usa un vero DOM consapevole degli spazi dei nomi e preserva le proprietà non correlate durante le modifiche
Le dichiarazioni DTD vengono rifiutate dal lettore XML indipendentemente dalla codifica sorgente; i caratteri di input e decodificati sono delimitati, e un passaggio in streaming limita profondità ed eventi nodo prima della costruzione del DOM
Il rendering usa vera memoria bitmap nativa e superfici immagine Cairo; il rendering a bande preserva le coordinate nello spazio dispositivo e usa righe di guardia per mantenere costante l'antialiasing ai bordi
L'incorporamento nativo di font di famiglia risolve un vero file Fontconfig e incorpora un programma TrueType autonomo completo con CIDFontType2, CIDToGIDMap Identity, metriche inizializzate e larghezze Unicode; il testo BMP e i livelli OCR portabili sopravvivono al salvataggio/ricaricamento del PDF
Il punto di ingresso rifiuta font di famiglia non incorporati, collezioni, programmi CFF e diritti di incorporamento solo bitmap; l'incorporamento limitato richiede il consueto override esplicito dei diritti, e i font che vietano il subsetting restano programmi completi
Limiti
- I device context Windows, EMF, la GUI, gli appunti e la stampa sono fuori dal backend headless nativo
- Lo shaping nativo complesso del testo e le identità dell'archivio certificati di sistema Windows non sono disponibili
- Il punto di ingresso di incorporamento TrueType autonomo supporta attualmente il testo BMP; il testo dei piani supplementari, l'estrazione dei volti TTC e l'incorporamento CFF sono fuori da questo punto di ingresso
- La revoca OCSP/CRL online non è disponibile; le richieste di verifica della revoca riportano un risultato sconosciuto
- Il provider PFX nativo predefinito rifiuta RSA-PSS e attributi di firma aggiuntivi di policy, commitment o revoca
- Le trasformazioni CMYK/ICC native e la scrittura BMP indicizzata a un bit non sono disponibili
- HTTP richiede il supporto DNS asincrono in libcurl per rispettare i timeout di ricerca DNS
Compilazione e verifica
python3 Tests/Native/run_native_tests.py --compiler /path/to/fpc --output /tmp/pdflib-native-tests
Passa --config /path/to/fpc.cfg per una configurazione esplicita del compilatore; il runner non cambia le impostazioni globali del compilatore e non aggiunge -FcUTF8
La suite controlla i formati eseguibili nativi reali e scrive un report JSON con versioni di compilatore/dipendenze, hash delle sorgenti, hash degli eseguibili, risultati e limiti
Le fixture Tests/Native nel repository coprono salvataggio/ricaricamento/rendering PDF, workflow testuali, crittografia, metadati, firme, traffico HTTP/TSA reale e casi di sicurezza negativi