Linux et macOS natifs
Le backend FPC natif prend en charge les workflows headless de la bibliothèque sur Linux x64 et macOS ARM64, en produisant de vrais programmes ELF et Mach-O
Utilisez l’API TPDFlib existante pour la création PDF, l’enregistrement/chargement, l’extraction et l’édition de texte, l’extraction structurée, les rappels OCR portables, le rendu bitmap, les métadonnées, le chiffrement, l’accès réseau par plages et la signature PFX native
Dépendances à l’exécution
| Fournisseur | Bibliothèque | Rôle |
|---|---|---|
| OpenSSL 3 | libcrypto | AES CBC/GCM, condensats, identités PKCS12, signatures CMS, intégrité et chaînes d’ancrages de confiance explicites |
| libcurl | libcurl avec DNS asynchrone | HTTP/HTTPS, transport binaire borné, accès par plages et requêtes RFC 3161 |
| Cairo | libcairo | Surfaces d’images bitmap, tracés, découpe, contours de glyphes et images |
| Fontconfig | libfontconfig | Résolution réelle des fichiers de polices natives, avec substitution de famille explicite |
| OpenJPEG 2 | libopenjp2 | Décodage et encodage JPEG 2000 |
Linux charge les SONAME système correspondants ; macOS utilise les bibliothèques ARM64 sous /opt/homebrew et le libcurl système
Des bibliothèques ou symboles manquants ou des opérations non prises en charge produisent des échecs explicites ; aucun substitut de contexte de périphérique Windows n’est utilisé
Signature et horodatage
Le fournisseur PFX par défaut prend en charge de vraies identités RSA et EC, CMS détaché, CAdES et les profils SHA1 attachés historiques ; la vérification contrôle les octets PDF ByteRange et la signature CMS
La vérification de chaîne de certificats requiert des ancrages de confiance explicites ; les certificats incorporés n’accordent aucune confiance, et l’intégrité seule n’implique pas la confiance
ApplyPAdESSignatureTimeStamp utilise le transport HTTP natif par défaut configuré pour récupérer et attacher un vrai jeton RFC 3161 ; réservez une capacité /Contents suffisante avant la signature d’origine
La vérification d’horodatage contrôle le jeton signé, l’empreinte du message, l’EKU timeStamping critique exclusif, le nom de la TSA, la politique/nonce attendus optionnels et la chaîne de certificats de confiance au moment de la génération du jeton
Les horodatages de document vérifient en outre l’empreinte réelle du ByteRange PDF ; l’appelant peut utiliser le workflow de passe-through DocTimeStamp existant et fournir le jeton
Métadonnées et rendu
XMP utilise un vrai DOM conscient des espaces de noms et préserve les propriétés sans rapport lors des modifications
Les déclarations DTD sont rejetées par le lecteur XML quelle que soit l’encodage de la source ; les caractères d’entrée et décodés sont bornés, et une passe en flux limite la profondeur et les événements de nœuds avant la construction du DOM
Le rendu utilise un vrai stockage bitmap natif et des surfaces d’image Cairo ; le rendu par bandes préserve les coordonnées de l’espace périphérique et utilise des lignes de garde pour garder un anticrénelage cohérent aux frontières
L’incorporation native de polices de famille résout un vrai fichier Fontconfig et incorpore un programme TrueType autonome complet avec CIDFontType2, CIDToGIDMap Identity, métriques initialisées et largeurs Unicode ; le texte BMP et les calques OCR portables survivent à l’enregistrement/rechargement du PDF
L’entrée rejette les polices de famille non incorporées, les collections, les programmes CFF et les droits d’incorporation limités aux bitmaps ; l’incorporation restreinte requiert la dérogation explicite de droits existante, et les polices qui interdisent le sous-ensemblement restent des programmes complets
Limites
- Les contextes de périphérique Windows, l’EMF, l’interface graphique, le presse-papiers et l’impression sont hors du backend natif headless
- Le façonnage natif complexe du texte et les identités du magasin de certificats Windows ne sont pas disponibles
- L’entrée d’incorporation TrueType autonome prend actuellement en charge le texte BMP ; le texte des plans supplémentaires, l’extraction de faces TTC et l’incorporation CFF sont hors du périmètre de cette entrée
- La révocation OCSP/CRL en ligne n’est pas disponible ; les demandes de vérification de révocation signalent un résultat inconnu
- Le fournisseur PFX natif par défaut rejette RSA-PSS et les attributs de signature de politique, d’engagement ou de révocation supplémentaires
- Les transformations CMYK/ICC natives et l’écriture BMP indexé à un bit ne sont pas disponibles
- HTTP requiert la prise en charge du DNS asynchrone dans libcurl pour honorer les timeouts de résolution DNS
Compilation et vérification
python3 Tests/Native/run_native_tests.py --compiler /path/to/fpc --output /tmp/pdflib-native-tests
Passez --config /path/to/fpc.cfg pour une configuration de compilateur explicite ; le runner ne modifie pas les réglages globaux du compilateur et n’ajoute pas -FcUTF8
La suite vérifie les formats réels des exécutables natifs et écrit un rapport JSON avec les versions de compilateur/dépendances, les hachages des sources et des exécutables, les résultats et les limites
Les fixtures Tests/Native du dépôt couvrent l’enregistrement/rechargement/rendu PDF, les workflows de texte, le chiffrement, les métadonnées, les signatures, le vrai trafic HTTP/TSA et les cas de sécurité négatifs