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;
KeepWithNextmemindahkan paragraf ketika paragraf akan mengonsumsi baris terakhir yang harus tetap untuk konten berikutnyaMinOrphanLinesmencegah terlalu sedikit baris pembuka tertinggal di bagian bawah halamanMinWidowLinesmemajukan pemisahan ketika terlalu sedikit baris penutup akan tersisa di halaman berikutnya- Kelanjutan otomatis mempertahankan lebar, tinggi, font, margin, dan pengaturan paragraf halaman sumber
- Ketika
ParaAutoAddPagefalse, luapan berhenti pada halaman saat ini dan menghasilkan diagnostikldkOverflow
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
ldkAutomaticPageBreakmelaporkan kelanjutan biasaldkKeepWithNext,ldkOrphanControl, danldkWidowControlmengidentifikasi batasan yang memindahkan pemisahanldkOverflowmengidentifikasi konten yang dihentikan oleh paginasi otomatis yang dinonaktifkanldkImmediateFlushmengidentifikasi halaman yang ditutup dan dipindahkan ke penyimpanan yang didukung fileldkPageLayermengidentifikasi satu pass lapisan halaman deklaratif yang selesai
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