Constrained Streaming Layout
HotPDF có thể đo các phần tử tái sử dụng được mà không vẽ, chia tách các phần tử đoạn văn, hàng, vùng chứa và tùy chỉnh thành các phần tiếp theo do bên gọi sở hữu, kết hợp các lớp trang tái sử dụng được, đưa các trang đã hoàn thành vào lưu trữ dựa trên tệp, áp dụng các ràng buộc ngắt trang đoạn văn, và cung cấp các chẩn đoán có giới hạn
Hợp đồng đo và vẽ tái sử dụng được
Kế thừa từ THPDFLayoutElement và triển khai Measure cùng Draw không có tác dụng phụ; phép đo chỉ nhận THPDFLayoutConstraints, nên nó không có bề mặt vẽ trang hay tài liệu
MeasureLayoutElement xác thực các kích thước không âm và tính toán Fits tập trung từ cùng các ràng buộc chiều rộng và chiều cao được dùng để định vị
THPDFLayoutElementKind cho phép ElementKind phân loại một triển khai là lekParagraph, lekRow, lekContainer, hoặc lekCustom, trong khi ElementPath cung cấp ngữ cảnh chẩn đoán ổn định
Sở hữu chia tách và tràn
Một phần tử có thể chia tách trả về THPDFLayoutSplit chứa các phần tử đã định vị và tràn do bên gọi sở hữu; PlaceLayoutElement đo lại phần đầu đã định vị, chỉ vẽ nó khi vừa, và chuyển phần đuôi vào THPDFLayoutOverflow
THPDFLayoutOverflow ghi lại trang nguồn và đường dẫn phần tử, sở hữu phần tiếp theo theo mặc định, và chuyển giao nó một cách tường minh thông qua DetachElement
Các lớp trang khai báo
Đăng ký các callback với AddPageLayer trước BeginDoc bằng cách chọn plkBackground, plkHeader, plkFooter, hoặc plkForeground
Mỗi callback chạy đúng một lần mỗi trang theo thứ tự nền, tiêu đề, nội dung tài liệu, chân trang và tiền cảnh, và được cô lập bằng một cặp lưu và khôi phục trạng thái đồ họa
RemovePageLayer gỡ một đăng ký theo định danh, trong khi ClearPageLayers đặt lại kết hợp tái sử dụng được trước khi việc tạo tài liệu bắt đầu
THPDFPageLayerRegistration lưu trữ định danh ổn định, kiểu lớp và trình xử lý object-method được dùng nội bộ bởi danh sách đăng ký có thứ tự của tài liệu
Xả trang ngay lập tức
Đặt ImmediateFlushLayout trước BeginDoc cho các báo cáo mà số trang không được biết trước
Khi một trang đóng, luồng nội dung nén hoặc không nén cuối cùng của nó di chuyển từ bộ nhớ sang một luồng tệp tạm do bên gọi sở hữu trong khi object PDF vẫn khả dụng cho việc hoàn thiện tham chiếu chéo và tài nguyên thông thường
ImmediateFlushedPageCount và ImmediateFlushedBytes báo cáo lượng nội dung đã dàn, và các tệp tạm thời bị xóa khi các luồng sở hữu chúng được giải phóng
Phân trang đoạn văn
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;
KeepWithNextdi chuyển một đoạn văn khi nó sẽ tiêu thụ dòng cuối cùng đáng lẽ phải được giữ cho nội dung theo sauMinOrphanLinesngăn quá ít dòng đầu bị bỏ lại ở đáy một trangMinWidowLinesđẩy một ngắt lên khi quá ít dòng cuối sẽ còn lại trên trang tiếp theo- Việc tiếp tục tự động bảo toàn chiều rộng, chiều cao, font, lề và cài đặt đoạn văn của trang nguồn
- Khi
ParaAutoAddPagelà false, tràn dừng ở trang hiện tại và tạo ra một chẩn đoánldkOverflow
Chẩn đoán bố cục
THPDFLayoutDiagnostic ghi lại THPDFLayoutDiagnosticKind, các chỉ mục trang nguồn và liên quan, hình chữ nhật bị ảnh hưởng, số dòng và một lý do tiếng Anh cho mỗi quyết định được giữ lại
THPDFLayoutDiagnosticArray được trả về bởi GetLayoutDiagnostics, trong khi GetLayoutDiagnostic hỗ trợ truy cập theo chỉ mục mà không cấp phát một bản sao
LayoutDiagnosticLimit giới hạn các bản ghi được giữ lại và LayoutDiagnosticDroppedCount báo cáo các quyết định bị loại bỏ sau giới hạn đó
ldkAutomaticPageBreakbáo cáo một sự tiếp tục thông thườngldkKeepWithNext,ldkOrphanControl, vàldkWidowControlxác định ràng buộc đã di chuyển một ngắtldkOverflowxác định nội dung bị dừng bởi phân trang tự động bị tắtldkImmediateFlushxác định một trang đã đóng được di chuyển sang lưu trữ dựa trên tệpldkPageLayerxác định một lượt lớp trang khai báo đã hoàn thành
Hướng đoạn văn
THPDFParagraphDirection cung cấp pdAuto, pdLeftToRight, và pdRightToLeft
DetectParagraphDirection áp dụng giải thuật ký tự mạnh đầu tiên trên các script RTL ở BMP và supplementary-plane, nhờ vậy các tiền tố trung tính và các run hướng thứ cấp không chọn sai hướng cơ sở
Dùng ConfigureParagraphDirection cho một cài đặt đoạn văn bền vững hoặc thuộc tính THPDFPara.Direction cho đoạn văn đang hoạt động
Semantic đoạn văn 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 phát ra một chuỗi marked-content /P chuẩn với một MCID được cấp phát, kết nối parent-tree trang, và các giá trị /Lang cùng /ActualText tùy chọn
THPDFPaginationArtifactSubtype cung cấp pasHeader, pasFooter, pasWatermark, và pasPageNumber, được phát ra dưới dạng nội dung /Artifact với /Type /Pagination và subtype chuẩn tương ứng