Module optionnel · pdftoolkit/pdf-to-html 0.7.0
La référence permet des restrictions de sécurité sur le contenu associé dans la section 4.6.1 et l'annexe A, pages physiques 62 et 68. Un PDF ne peut pas activer ses propres autorisations. L'application fournit des objets explicites pour ces décisions.
Utiliser une politique commune à la lecture et à la sortie
use PDF\Html\DerivationPolicy;
use PDF\Html\HtmlDeriver;
use PDF\Html\PdfToHtml;
use PDF\Html\Reading\ReadPdfSource;
use PDF\Html\Reading\StructureValidationMode;
use PDF\Reading\DocumentReader;
use PDF\Reading\FileBytes;
$policy = new DerivationPolicy();
$deriver = new HtmlDeriver($policy);
$converter = new PdfToHtml(deriver: $deriver);
$result = $converter->convert(new FileBytes($pdfBytes), 'document.pdf');
PdfToHtml construit son adaptateur source par défaut avec la politique et les
limites du dériveur. AssociatedFileSelection décide ainsi si une Alternative
ou un Supplement s'applique avant de lire le contenu PDF remplacé. Un contenu
associé bloqué ne supprime pas le contenu PDF original.
L'application qui choisit un adaptateur distinct fournit le même profil et les
mêmes limites. Des instances immuables équivalentes sont acceptées ; des valeurs
incompatibles sont refusées dès la construction de PdfToHtml :
$source = new ReadPdfSource(
policy: $policy,
derivationLimits: $deriver->limits,
structureValidation: StructureValidationMode::Strict,
);
$converter = new PdfToHtml(source: $source, deriver: $deriver);
Le mode strict refuse les associations inverses ParentTree incohérentes. Le mode
permissif les décrit dans sourceDiagnostics, repris dans les diagnostics de
dérivation. Les cycles et dépassements de budgets cumulatifs restent des erreurs
dans les deux modes. Aucun mode ne constitue une certification complète WTPDF,
PDF/UA ou d'accessibilité.
StandardPasswordAuthentication appartient au lecteur configuré explicitement.
Il fournit les permissions effectives utilisateur/propriétaire vérifiées à
ReadPdfSource ; un mot de passe incorrect est une erreur, sans nouvelle
tentative par un autre port. Voir l’authentification.
PdfToHtml ne déclenche le port d’authentification distinct que lorsque le lecteur produit
l'EncryptedPdfException typée pour /Encrypt vérifié. Les erreurs
d'interprétation suivantes et noms de filtres non acceptés ne sélectionnent
jamais l'authentification par texte. Le AuthenticationProvider reçoit la
politique d’intégrité effective et renvoie un ReadDocument authentifié pour
les octets fournis exacts, avec permissions vérifiées. Le convertisseur contrôle
le MAC exigé avant adaptation et refuse toute suppression/élévation des droits ;
le viewer destinataire applique ces permissions.
Les entrées Encrypt absentes ou nulles, directes/indirectes, ne demandent pas
d'authentification. AuthenticationBoundaryTest
contrôle le déclenchement, les erreurs d'adaptateur/fournisseur, les entrées nulles
et le refus de permissions non vérifiées.
Choisir séparément les comportements du navigateur
| Capacité | Valeur par défaut | Comportement activé |
|---|---|---|
allowActiveContent |
false | Exporter l'ECMAScript PDF fiable et les contenus associés actifs acceptés. Cela n'exécute aucun code en PHP et ne rend pas les scripts source sûrs. |
allowRemoteResources |
false | Produire les URL de ressources distantes autorisées. Le navigateur destinataire peut les récupérer, la bibliothèque PHP ne le fait pas. L'import HTML distant exige aussi l'autorisation de contenu actif. |
allowHtmlNamespace |
true | Dériver les types de structure HTML explicites reconnus sous le filtre de sécurité. Le désactiver exige un mapping vers un autre namespace reconnu. |
formActions.allowReset |
false | Activer le pont ResetForm propre à la bibliothèque : /DV, sélection, noms parents et exclusion. |
formActions.allowSubmit |
false | Activer les soumissions HTML SubmitForm acceptées. Les flags d'export non pris en charge sont diagnostiqués, sans changer silencieusement de format. |
preferVisualFigures |
false | Demander le rendu visuel de groupe au ContentRenderer fourni. Une capacité absente provoque un échec explicite pour ce profil visuel demandé. |
includeGraphics |
true | Conserver les graphiques pour le moteur fourni. Sans moteur, des diagnostics identifient les graphiques omis. |
Les actions de formulaire et les scripts PDF incorporés sont indépendants :
$policy = new DerivationPolicy(
formActions: new \PDF\Html\Forms\FormActionPolicy(allowReset: true),
);
Cela active l'implémentation de reset propre à la bibliothèque sans exporter les
scripts PDF du document, des pages ou des widgets. Un /DV absent retire la
valeur du champ PDF ; il ne restaure pas le /V initial. Un /Fields vide
explicitement diffère d'une sélection absente, et un nom parent correspond à
ses descendants à la frontière d'un point.
Le pont de script partage une valeur entre les widgets d'un même nom et lie les événements d'annotation à l'identifiant HTML final de chaque widget. Les cas PHP/Node exécutables documentent l'API de champs/événements acceptée ; ce n'est pas une implémentation complète d'Acrobat/ISO 21757-1.
Fournir explicitement un moteur de rendu
Les nœuds graphiques natifs conservent des objets GraphicProgram : opérandes,
état, ressources, plages d'instructions et appels Form englobants.
GraphicPdfExporter produit un PDF isolé d'une page contenant les opérations de
peinture demandées. Clipping et avancement du texte peuvent rester nécessaires
même lorsque la peinture d'un autre contenu est omise. Scripts du document PDF,
AcroForm et actions du catalogue ne sont pas exportés dans ce document de rendu.
L'export conserve le mode hérité de rendu/clipping du texte, exclut les artefacts
imbriqués et garde les groupes de transparence de page et la visibilité du contenu
optionnel. Sa version PDF est celle, effective, de la source, sans passage forcé
en PDF 2.0. Les programmes de page utilisent la CropBox physique par défaut ;
les références d'objet Form autonomes conservent leur XObject Form et les
clipping/Matrix/Group/OC originaux, avec les limites transformées du Form.
Une BBox de structure ou un GraphicViewport explicite en coordonnées de page
peut remplacer les limites de sortie. Transformation de page et matrice Form
s'appliquent chacune une seule fois. Aucun cadrage
à partir des pixels peints n'est déduit. Les budgets d'objets, instructions et
octets sont cumulatifs ; la profondeur réelle du parcours est bornée.
PageTransform(ReadPage) fournit la matrice physique commune de page. UserUnit
absent ou null direct/indirect vaut 1 ; le viewport explicite reste dans l'espace
utilisateur de page par défaut même si la racine sélectionnée est un Form
transformé atteint par référence d'objet.
RasterContentRenderer reçoit un objet GraphicsRasterizer fourni par
l'application. Cette capacité reçoit un RenderingDocument et renvoie un
ImageContent ; elle peut utiliser le moteur choisi par l'application. La
bibliothèque ne choisit pas de binaire, ne lance aucun processus et ne résout
pas de fichier externe.
AppearanceRenderer reste une capacité distincte pour les apparences des
widgets. Polices disponibles, installation du moteur, limites d'exécution et
environnement de rendu appartiennent à l'application.
L'oracle graphique contrôle les exports isolés
avec pypdf et de vrais pixels Poppler ; le moteur reste une frontière explicite
d'intégration en usage normal.
L'oracle de contexte compare les
sorties Poppler originales et exportées pour le clipping du texte hérité,
les artefacts, la transparence et le contenu optionnel.
Le guide graphique présente le port concret.
Interaction des widgets et validation des signatures
Modes de surbrillance et apparences appuyée/survol sélectionnées utilisent le CSS
propre à la bibliothèque, sans autoriser les scripts PDF. Le CSS auteur explicite
reste prioritaire. Un renderer de contenu existant est automatiquement adapté aux
apparences ; un AppearanceRenderer fourni séparément le remplace. Les popovers
natifs de signature ne nécessitent pas non plus de script PDF.
La validation des signatures possède son fournisseur explicite dans
ReadPdfSource, distinct du déchiffrement/MAC source et de allowActiveContent.
Sans fournisseur, un champ signé rapporte not-validated.
SignatureOutputValidation rapporte seulement l’intégrité avec certificat épinglé ;
confiance/révocation/horodatage et permissions des révisions nécessitent une
politique applicative. Lire les signatures avant d’interpréter un
état comme une approbation.
Conserver toutes les ressources renvoyées
DerivationResult contient HTML, CSS, ressources et diagnostics. Les runtimes
de formulaire activés et les scripts PDF fiables sont externalisés par
ScriptAssetEmitter ; écrire les ressources JavaScript renvoyées à côté du HTML
ou adapter leurs URL de manière cohérente. Les feuilles de style et images
associées demandent aussi la conservation de leurs URL et noms retournés. Les
noms des ressources passent la validation de la frontière de stockage du package.
Servir ces fichiers, accepter les soumissions, appliquer les permissions PDF authentifiées et choisir origine/politique de sécurité du contenu appartiennent à l'application. Lire la sécurité et examiner les diagnostics avant publication.