Aller au contenu
getnextpdf.com

FAQ NextPDF

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.

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.

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.

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.

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.

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.

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.

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.

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.

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é.

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.

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.

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.

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.

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.