Mise en page en flux contraint
HotPDF peut placer chaque page terminée dans un stockage sauvegardé par fichier, appliquer des contraintes de saut de page des paragraphes, exposer des diagnostics de mise en page bornés, marquer les paragraphes sémantiques et les artefacts de pagination, et résoudre la direction de base du paragraphe avant d’émettre du texte à direction mixte
Vidage immédiat des pages
Définissez ImmediateFlushLayout avant BeginDoc pour les rapports dont le nombre de pages n’est pas connu à l’avance
Lorsqu’une page se ferme, son flux de contenu final compressé ou non compressé passe de la mémoire vers un flux de fichier temporaire propriétaire tandis que l’objet PDF reste disponible pour la finalisation normale des références croisées et des ressources
ImmediateFlushedPageCount et ImmediateFlushedBytes indiquent la quantité de contenu placé, et les fichiers temporaires sont supprimés lorsque les flux qui les possèdent sont libérés
Pagination des paragraphes
ParagraphIndex := PDF.CreateParagraph(0, jtLeft, 36, 36, 36, 36);
PDF.ConfigureParagraphPagination(ParagraphIndex, True, 2, 2);
PDF.ConfigureParagraphDirection(ParagraphIndex, pdAuto);
PDF.BeginParagraph(ParagraphIndex);
PDF.CurrentParagraph.ShowUnicodeText(BodyText);
PDF.EndParagraph;
KeepWithNextdéplace un paragraphe lorsqu’il consommerait la dernière ligne qui doit rester pour le contenu suivantMinOrphanLinesempêche qu’il reste trop peu de lignes d’ouverture en bas d’une pageMinWidowLinesavance un saut lorsqu’il resterait trop peu de lignes de fermeture sur la page suivante- La continuation automatique préserve la largeur, la hauteur, la police, les marges et les paramètres de paragraphe de la page source
- Lorsque
ParaAutoAddPageest faux, le débordement s’arrête sur la page courante et produit un diagnosticldkOverflow
Diagnostics de mise en page
THPDFLayoutDiagnostic enregistre le THPDFLayoutDiagnosticKind, les index de pages source et associées, le rectangle affecté, le nombre de lignes et une raison en anglais pour chaque décision conservée
THPDFLayoutDiagnosticArray est renvoyé par GetLayoutDiagnostics, tandis que GetLayoutDiagnostic permet un accès indexé sans allouer de copie
LayoutDiagnosticLimit borne les enregistrements conservés et LayoutDiagnosticDroppedCount signale les décisions ignorées après cette limite
ldkAutomaticPageBreaksignale une continuation ordinaireldkKeepWithNext,ldkOrphanControletldkWidowControlidentifient la contrainte qui a déplacé un sautldkOverflowidentifie le contenu arrêté par la désactivation de la pagination automatiqueldkImmediateFlushidentifie une page fermée déplacée vers un stockage sauvegardé par fichier
Direction du paragraphe
THPDFParagraphDirection fournit pdAuto, pdLeftToRight et pdRightToLeft
DetectParagraphDirection applique la résolution au premier caractère fort sur les scripts RTL du BMP et du plan supplémentaire, afin que les préfixes neutres et les exécutions directionnelles secondaires ne choisissent pas la mauvaise direction de base
Utilisez ConfigureParagraphDirection pour un réglage persistant du paragraphe ou la propriété THPDFPara.Direction pour le paragraphe actif
Sémantique de paragraphe PDF/UA
Root := PDF.AddStructureElement('Document', nil);
Paragraph := PDF.BeginTaggedParagraph(Root, 'en-US', 'Accessible text');
PDF.CurrentPage.TextOut(36, 72, 0, WideString('Accessible text'));
PDF.EndTaggedParagraph;
PDF.BeginPaginationArtifact(pasHeader);
PDF.CurrentPage.TextOut(36, 20, 0, WideString('Running header'));
PDF.EndPaginationArtifact;
BeginTaggedParagraph émet une séquence de contenu balisé standard /P avec un MCID alloué, le câblage de l’arborescence parent de la page et des valeurs /Lang et /ActualText facultatives
THPDFPaginationArtifactSubtype fournit pasHeader, pasFooter, pasWatermark et pasPageNumber, émis comme contenu /Artifact avec /Type /Pagination et le sous-type standard correspondant