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;

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

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

API associées