Constrained Streaming Layout

HotPDF dapat mengukur elemen yang dapat digunakan kembali tanpa menggambar, memisahkan paragraf, baris, kontainer, dan elemen khusus menjadi kelanjutan yang dimiliki sendiri, menyusun lapisan halaman yang dapat digunakan kembali, menyetorkan halaman yang selesai ke penyimpanan yang didukung file, menerapkan batasan pemisah halaman paragraf, dan mengekspos diagnostik yang terbatas

Kontrak pengukuran dan penggambaran yang dapat digunakan kembali

Turunkan dari THPDFLayoutElement dan implementasikan Measure plus Draw tanpa efek samping; pengukuran hanya menerima THPDFLayoutConstraints, sehingga tidak memiliki permukaan penggambaran halaman atau dokumen

MeasureLayoutElement memvalidasi dimensi non-negatif dan menghitung Fits secara terpusat dari batasan lebar dan tinggi yang sama yang digunakan untuk penempatan

THPDFLayoutElementKind memungkinkan ElementKind mengklasifikasikan sebuah implementasi sebagai lekParagraph, lekRow, lekContainer, atau lekCustom, sementara ElementPath menyediakan konteks diagnostik yang stabil

Kepemilikan pemisahan dan luapan

Elemen yang dapat dipisah mengembalikan THPDFLayoutSplit yang berisi elemen yang ditempatkan dan luapan yang dimiliki pemanggil; PlaceLayoutElement mengukur ulang kepala yang ditempatkan, menggambarnya hanya jika muat, dan memindahkan ekor ke THPDFLayoutOverflow

THPDFLayoutOverflow mencatat halaman sumber dan jalur elemen, memiliki kelanjutan secara default, dan memindahkannya secara eksplisit melalui DetachElement

Lapisan halaman deklaratif

Daftarkan callback dengan AddPageLayer sebelum BeginDoc dengan memilih plkBackground, plkHeader, plkFooter, atau plkForeground

Setiap callback berjalan tepat sekali per halaman dalam urutan latar belakang, header, konten dokumen, footer, dan latar depan, serta diisolasi oleh pasangan simpan dan pemulihan status grafis

RemovePageLayer menghapus satu pendaftaran berdasarkan pengenal, sementara ClearPageLayers mengatur ulang komposisi yang dapat digunakan kembali sebelum pembuatan dokumen dimulai

THPDFPageLayerRegistration menyimpan pengenal stabil, jenis lapisan, dan penangan metode objek yang digunakan secara internal oleh daftar pendaftaran terurut dokumen

Pembuangan halaman langsung

Setel ImmediateFlushLayout sebelum BeginDoc untuk laporan yang jumlah halamannya tidak diketahui sebelumnya

Ketika sebuah halaman ditutup, stream konten akhir yang terkompresi atau tidak terkompresi dipindahkan dari memori ke stream file sementara yang dimiliki sendiri sementara objek PDF tetap tersedia untuk finalisasi cross-reference dan sumber daya normal

ImmediateFlushedPageCount dan ImmediateFlushedBytes melaporkan jumlah konten yang disetorkan, dan file sementara dihapus ketika stream pemiliknya dirilis

Paginasi paragraf

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;

Diagnostik tata letak

THPDFLayoutDiagnostic mencatat THPDFLayoutDiagnosticKind, indeks halaman sumber dan terkait, persegi panjang yang terdampak, jumlah baris, dan alasan bahasa Inggris untuk setiap keputusan yang dipertahankan

THPDFLayoutDiagnosticArray dikembalikan oleh GetLayoutDiagnostics, sementara GetLayoutDiagnostic mendukung akses terindeks tanpa mengalokasikan salinan

LayoutDiagnosticLimit membatasi catatan yang dipertahankan dan LayoutDiagnosticDroppedCount melaporkan keputusan yang dibuang setelah batas tersebut

Arah paragraf

THPDFParagraphDirection menyediakan pdAuto, pdLeftToRight, dan pdRightToLeft

DetectParagraphDirection menerapkan resolusi karakter-kuat-pertama di seluruh skrip BMP dan bidang suplementer RTL, sehingga awalan netral dan run arah sekunder tidak memilih arah dasar yang salah

Gunakan ConfigureParagraphDirection untuk pengaturan paragraf persisten atau properti THPDFPara.Direction untuk paragraf aktif

Semantik paragraf 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 memancarkan urutan marked-content /P standar dengan MCID yang dialokasikan, pengkabelan parent-tree halaman, dan nilai /Lang serta /ActualText opsional

THPDFPaginationArtifactSubtype menyediakan pasHeader, pasFooter, pasWatermark, dan pasPageNumber, dipancarkan sebagai konten /Artifact dengan /Type /Pagination dan subtype standar yang cocok

API terkait