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;

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 đó

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

API liên quan