FAQ NextPDF
En un coup d’œil
Section intitulée « En un coup d’œil »Cette page répond aux questions qui viennent en premier quand tu évalues NextPDF ou démarres un nouveau projet. Chaque réponse est courte et renvoie vers la page qui la couvre en entier. NextPDF est un moteur PHP 8.4 qui génère et inspecte des documents Portable Document Format (PDF) 2.0, le format de fichier défini par ISO 32000-2.
Si tu débutes complètement, lis d’abord Démarrer, puis reviens ici pour les détails.
Démarrage
Section intitulée « Démarrage »De quelle édition ai-je besoin : Core, Pro ou Enterprise ?
Section intitulée « De quelle édition ai-je besoin : Core, Pro ou Enterprise ? »Commence par Core. Le cœur open source (nextpdf/core), sous licence Apache-2.0 et sans frais,
génère une sortie PDF, rend le HTML pris en charge en PDF et inspecte les PDF. Le Core produit déjà des signatures CMS SignedData pour les niveaux
baseline PDF Advanced Electronic Signatures (PAdES) B-B et B-T. Choisis Pro
quand tu as besoin d’une génération avancée et d’opérations sur les documents, de
la sortie de facture électronique
(Factur-X / ZUGFeRD), ou de workflows de signature avancés tels que la signature
distante, cloud-KMS et séquentielle. Choisis Enterprise quand tu as besoin de
workflows de création d’archivage PDF/A, des
niveaux long terme PAdES (B-LT / B-LTA) avec un Document Security Store et des
horodatages de document, d’une signature adossée au matériel via un module de
sécurité matériel (HSM), ou de signatures électroniques qualifiées. Pro et
Enterprise sont les deux éditions sous licence de NextPDF Premium, la ligne payante ; voir
Choisis ta voie.
Est-ce vraiment de l’Apache-2.0 ?
Section intitulée « Est-ce vraiment de l’Apache-2.0 ? »Oui, pour le cœur. nextpdf/core déclare "license": "Apache-2.0" et livre le texte
complet de l’Apache License 2.0 dans son fichier LICENSE. Tu peux utiliser,
modifier, redistribuer et commercialiser le cœur, sous réserve des exigences
d’attribution et de NOTICE (Apache-2.0 §4). NextPDF Pro et NextPDF Enterprise sont
des éditions commerciales propriétaires et ne sont pas couvertes par cette
licence. Le nom et le logo NextPDF sont des marques déposées, distinctes de la
licence du code. Voir Licence.
Quelle est la version PHP minimale ?
Section intitulée « Quelle est la version PHP minimale ? »PHP 8.4. La contrainte du paquet est >=8.4 <9.0, donc Composer refuse l’installation
sur PHP 8.3 ou inférieur, ou sur PHP 9. NextPDF cible un seul runtime moderne et
utilise directement ses fonctionnalités de langage. Voir
Installer NextPDF.
A-t-il besoin d’un binaire externe ou d’un navigateur headless ?
Section intitulée « A-t-il besoin d’un binaire externe ou d’un navigateur headless ? »Non, pas pour le moteur de cœur. Le moteur natif est implémenté en PHP et dans des
extensions PHP standard, sans binaire PDF externe ni navigateur headless
obligatoire : l’API fluide et le pipeline HTML intégré writeHtml() s’exécutent dans le même
processus, sans navigateur ni appel réseau. Un binaire Chrome ou Chromium est
optionnel et n’est nécessaire que pour le moteur de rendu Artisan
(writeHtmlChrome()), que tu installes séparément en tant que nextpdf/artisan. Les
ponts Cloudflare et Gotenberg sont aussi optionnels et appellent un service. Voir
Choisis ta voie.
Quelles extensions PHP exige-t-il ?
Section intitulée « Quelles extensions PHP exige-t-il ? »Le composer.json du cœur exige les extensions standard ext-mbstring, ext-zlib,
ext-intl, ext-gd, ext-curl et ext-openssl, qui sont des extensions PHP
couramment disponibles ; assure-toi qu’elles sont installées et activées dans ton
runtime. ext-curl sous-tend les allers-retours réseau optionnels — l’horodatage
RFC 3161 et la récupération d’actifs distants — donc la génération native hors ligne
ne la sollicite pas, mais Composer la liste tout de même comme exigence stricte. Les
intégrations vérifient celles dont elles ont besoin au démarrage et s’arrêtent avec
un message clair si l’une manque. La liste complète vit dans le composer.json du
paquet ; voir Installer NextPDF.
Comment générer mon premier PDF ?
Section intitulée « Comment générer mon premier PDF ? »Installe le cœur, puis construis un document avec l’API fluide :
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$document = Document::createStandalone();$document->addPage();$document->setFont('helvetica', 'B', 24);$document->cell(0, 15, 'Hello, NextPDF!', newLine: true);$document->save(__DIR__ . '/first.pdf');Parcours-le pas à pas dans Ton premier PDF.
Éditions et licence
Section intitulée « Éditions et licence »Le Core a-t-il des limites de fonctionnalités ou un filigrane ?
Section intitulée « Le Core a-t-il des limites de fonctionnalités ou un filigrane ? »Non. Le Core est le moteur open source pour le jeu de fonctionnalités du Core, sans filigrane et sans écran de rappel. Pour le jeu de fonctionnalités du Core — génération, inspection, chiffrement, primitives de sortie PDF/A et PDF/UA, et signature B-B/B-T par clé logicielle (sans les workflows Premium de validation à long terme et de garde des clés) — le Core est complet. Le filigrane d’évaluation ne s’applique qu’à une autorisation d’évaluation Premium, où tu testes le jeu complet de fonctionnalités Pro et Enterprise derrière une marque amovible ; une licence payante la retire sans aucune modification du code applicatif. Voir Licence et activation.
Ai-je besoin de modifications de code pour passer à Pro ou Enterprise ?
Section intitulée « Ai-je besoin de modifications de code pour passer à Pro ou Enterprise ? »La plupart du temps, non. Quand tu installes nextpdf/premium, les intégrations de
framework et le serveur le détectent automatiquement et exposent les capacités
supplémentaires. La plupart des applications conservent les mêmes points
d’intégration de haut niveau ; certains workflows Premium peuvent exiger une
configuration ou des appels propres à une fonctionnalité. Tu actives une enveloppe de
licence signée une fois par déploiement. Voir
Licence et activation.
Puis-je utiliser le cœur dans un produit commercial à code fermé ?
Section intitulée « Puis-je utiliser le cœur dans un produit commercial à code fermé ? »Oui. L’Apache License 2.0 n’a aucune restriction non commerciale. Tu peux utiliser le
cœur dans des produits commerciaux à code fermé, payants ou internes, à condition
d’honorer les obligations d’attribution et de NOTICE et de ne pas traiter la
licence du code comme une permission d’utiliser la marque NextPDF. Voir
Licence et
Marque et usage de la marque.
Capacités
Section intitulée « Capacités »Peut-il lire et analyser des PDF, ou seulement les écrire ?
Section intitulée « Peut-il lire et analyser des PDF, ou seulement les écrire ? »Les deux, avec une réserve. NextPDF écrit des PDF et les lit aussi : le module
Inspect lit un fichier existant dans un InspectResult structuré avec des données de
complexité, de polices, d’images et de risque, et tu peux fusionner et découper des
documents existants. Inspect est marqué expérimental, donc la forme de son
résultat peut changer entre versions mineures — utilise-le pour le diagnostic et le
filtrage, pas comme un contrat de longue durée. Voir le
module Inspect.
Produit-il du texte sélectionnable et indexable ?
Section intitulée « Produit-il du texte sélectionnable et indexable ? »Oui. L’API fluide et le pipeline intégré writeHtml() émettent tous deux du vrai
contenu textuel, pas des images matricielles, donc la sortie est sélectionnable et
indexable. Le writeHtmlChrome() du moteur de rendu Artisan garde aussi le texte
sélectionnable. Voir Ton premier PDF.
Comment fonctionne le rendu HTML et CSS ?
Section intitulée « Comment fonctionne le rendu HTML et CSS ? »Le moteur de cœur inclut un pipeline HTML purement PHP. writeHtml() rend un
fragment HTML avec un sous-ensemble pris en charge de CSS directement dans la page,
sans navigateur et sans appel réseau. Quand une mise en page exige une fidélité de
navigateur complète — comme flexbox, grid ou les polices web — installe le moteur de
rendu Artisan et appelle writeHtmlChrome(). Avant de t’appuyer sur une propriété,
consulte la matrice de prise en charge CSS.
Comment fonctionnent les polices ?
Section intitulée « Comment fonctionnent les polices ? »Les alias de polices standard intégrés tels que Helvetica fonctionnent sans aucune configuration pour du texte WinAnsi simple, donc ton premier document n’a besoin d’aucun fichier de police. Les polices standard latines intégrées conviennent au texte WinAnsi de base ; Symbol et ZapfDingbats utilisent leurs propres encodages ; pour rendre d’autres écritures, tu enregistres et embarques une police dont la table de caractères et le chemin de mise en forme prennent en charge cette écriture. Voir la matrice de prise en charge des polices et le module Font.
Prend-il en charge PDF/A et l’accessibilité (PDF/UA) ?
Section intitulée « Prend-il en charge PDF/A et l’accessibilité (PDF/UA) ? »Oui, avec une limite claire : la prise en charge d’un profil n’est pas la
conformité. Le cœur livre le discriminateur de conformité et les primitives de
balisage — enableTaggedPdf() active la sortie de structure PDF balisé utilisée par
les workflows PDF/UA, et enablePdfA() sélectionne un profil de sortie PDF/A dans le
Core ; les éditions Premium ajoutent par-dessus des workflows et un outillage de
création d’archivage de plus haut niveau (validation, politique et opérations de
production). NextPDF émet les artefacts structurels qu’un profil exige ; un validateur
indépendant tel que veraPDF décide si un fichier donné est réellement conforme. Voir
Conformité et le
module Accessibilité.
Comment signer un PDF ?
Section intitulée « Comment signer un PDF ? »Le cœur peut produire des signatures Cryptographic Message Syntax (CMS) SignedData et
appliquer des horodatages RFC 3161 (le niveau B-T), en utilisant des algorithmes à
clé logicielle pris en charge via le fournisseur de signature configuré. Ton code
dépend du contrat SignerInterface, donc le même appel fonctionne d’une édition à l’autre. Les
niveaux long terme PAdES B-LT et B-LTA, la garde des clés HSM et PKCS#11, et les
signatures qualifiées sont des capacités Enterprise ; les workflows de signature
adossée au cloud et au KMS sont disponibles dans Pro. Le Core produit les structures
baseline B-B et B-T. Voir le
module Signature.
Production
Section intitulée « Production »Est-il sûr pour les workers et thread-safe ?
Section intitulée « Est-il sûr pour les workers et thread-safe ? »Un Document est à usage unique : une fois que tu en as écrit un, crée une nouvelle
instance pour le document suivant plutôt que de le réutiliser. Cela en fait un choix
naturel pour le modèle par requête, par tâche utilisé par PHP-FPM, les workers de
file d’attente et les frameworks — chaque unité de travail construit son propre
document. Quand tu analyses ou composes une entrée non fiable, exécute ce travail
dans un worker contraint et resserre les garde-fous de ressources (maxFiles,
maxTotalBytes, maxBytes). Voir le
module Document et le
modèle de menace du moteur.
La sortie est-elle déterministe ?
Section intitulée « La sortie est-elle déterministe ? »Elle est structurellement déterministe, mais pas identique octet pour octet par
défaut. Deux exécutions de la même entrée produisent des PDF structurellement égaux,
mais chacun porte une queue et un /ID de document neufs, donc les octets diffèrent.
La signature et les horodatages ajoutent par conception une variation supplémentaire
par exécution. Fonde tes comparaisons sur l’égalité structurelle, ou
normalise les champs volatils, plutôt que d’attendre des octets identiques d’une
exécution à l’autre.
Comment le déployer ?
Section intitulée « Comment le déployer ? »Versionne composer.lock pour que chaque worker déployé résolve la même version du
moteur, puis déploie comme n’importe quelle bibliothèque PHP — la génération native
n’a besoin d’aucun démon, navigateur ni réseau ; l’horodatage (B-T), les actifs
distants ou le pont navigateur optionnel exigent un accès réseau configuré. Si des
services non-PHP ont besoin du moteur, exécute NextPDF Server, qui
l’expose via Model Context Protocol (MCP), REST et gRPC. Pour Premium, place
l’enveloppe de licence signée là où le déploiement la charge et exécute l’étape
d’activation unique ; grâce à l’état de licence mis en cache, le traitement normal
n’a besoin d’aucun service de licence, si bien que les déploiements air-gapped sont
pris en charge. Voir Installer NextPDF et
Licence et activation.
Où chercher quand quelque chose se passe mal ?
Section intitulée « Où chercher quand quelque chose se passe mal ? »NextPDF signale les erreurs par classe d’exception PHP, et non par un code d’erreur sous forme de chaîne, et les exceptions sensibles au contexte portent des champs de diagnostic structurés. La base de connaissances de dépannage associe les défaillances courantes de signature, PDF/A, PDF/UA, polices, balisage et chiffrement à leur cause et à leur résolution.