Declarative Layout DOM

HPDFLayoutDOM xây dựng các thành phần tài liệu tái sử dụng trên THPDFLayoutElement, MeasureLayoutElement, PlaceLayoutElement, các mảnh tràn thuộc sở hữu, và ImmediateFlushLayout

Soạn tài liệu và section

Document := THPDFDOMDocument.Create;
Renderer := THPDFDOMRenderer.Create;
try
  Section := Document.AddSection;
  Section.PageWidth := 595.28;
  Section.PageHeight := 841.89;
  Section.Header := THPDFDOMText.Create('Quarterly report');
  Section.Footer := THPDFDOMText.Create('Confidential');
  Section.Body.Style.Padding := 12;
  Section.Body.Style.Spacing := 8;
  Section.Body.AddText(BodyText, 'Narrative');

  PDF.OutputStream := Output;
  PDF.ImmediateFlushLayout := True;
  Statistics := Renderer.Render(Document, PDF);
finally
  Renderer.Free;
  Document.Free;
end;

THPDFDOMDocument sở hữu các section của nó, mỗi THPDFDOMSection sở hữu thân, tiêu đề đầu, chân trang, và kiểu của nó, và mỗi stack hoặc container sở hữu các thành phần được gắn vào nó

THPDFDOMRenderer.Render bắt đầu và kết thúc tài liệu đích, tạo một trang mới cho mỗi section mới, lặp lại đồ nội thất section trên các trang tiếp nối, và trả về thống kê trang, vị trí đặt, tách, đồ nội thất, cấu trúc, marked-content, artifact, và độ sâu tiếp nối tối đa

Đặt mọi tùy chọn đầu ra, nén, tuân thủ, lớp, và immediate-flush của THotPDF trước khi gọi Render

GenerateStructure mặc định là True, nên trình dựng cũng xây một cây cấu trúc logic an toàn tiếp nối và dùng THPDFDOMDocument.Language khi đích không có ngôn ngữ

Thành phần

Mọi thành phần cung cấp các hợp đồng Name, Path, Style, Clone, Measure, Draw, và Split ổn định cùng các ghi đè vai trò ngữ nghĩa, ngôn ngữ, văn bản thay thế, văn bản thay thế, văn bản mở rộng, và artifact

Việc duyệt thân cấp cao nhất là tuyến tính và không nhân bản thành phần; các phần tiếp nối văn bản và bảng giữ siêu dữ liệu dải hoặc lát hàng thay vì sao chép toàn bộ cây nội dung

Kế thừa kiểu

THPDFDOMStyle giải quyết tên font, cỡ, kiểu, màu văn bản, nền, viền, padding, spacing, và chiều cao dòng qua chuỗi cha của nó

Kiểu section là cha của thân và đồ nội thất của nó, kiểu stack hoặc container là cha của các con của nó, và kiểu bảng chảy qua các hàng đến các ô

Chỉ các giá trị được gán tường minh mới ghi đè cha; Clear xóa các gán cục bộ và liên kết cha, trong khi Assign sao chép các gán cục bộ mà không sao chép quyền sở hữu hoặc tổ tiên

Chuỗi cha sâu hơn 64 mức bị từ chối là tuần hoàn hoặc không có giới hạn

Nhà máy thành phần tái sử dụng

THPDFDOMComponentFactory là một hàm ẩn danh tạo một thể hiện THPDFDOMComponent do caller sở hữu cho mỗi lần gọi

Document.RegisterComponent('notice',
  function: THPDFDOMComponent
  begin
    Result := THPDFDOMContainer.Create(
      THPDFDOMText.Create('Reusable notice'));
  end);

Section.Body.Add(Document.CreateComponent('notice'));

Tên nhà máy không phân biệt hoa thường và duy nhất, mỗi lần gọi phải trả về một thể hiện thành phần mới, và container nhận lấy quyền sở hữu sau Add

Hãy dùng SetHeaderClone, SetFooterClone, hoặc Clone khi một thành phần đã khai báo phải được tái sử dụng tại nhiều vị trí sở hữu

Bảng tiêu đề lặp lại

Table := THPDFDOMTable.Create('Orders');
Table.AddColumn(1);
Table.AddColumn(3);
Header := Table.AddRow(18, True);
Header[0].Text := 'ID';
Header[1].Text := 'Description';

Row := Table.AddRow(22);
Row[0].Text := '1001';
Row[1].Text := 'Bounded streaming layout';
Section.Body.Add(Table);

Các hàng tiêu đề phải liền nhau và đứng trước các hàng thân, trọng số cột dương chia độ rộng có sẵn, và chiều cao hàng là các giá trị dương tường minh

Khi RepeatHeaders là true, một lần tách yêu cầu chỗ cho mọi hàng tiêu đề đầu và ít nhất một hàng thân, ngăn các trang tiếp nối chỉ có tiêu đề

Phân trang và ranh giới lỗi

Trình dựng trước tiên đo lại mỗi thành phần so với hình chữ nhật thân còn lại, di chuyển một mảnh tối thiểu không tách được sang một trang mới khi có thể, và ủy thác mọi lần tách hợp lệ cho PlaceLayoutElement

Một phần tử không thể vừa một trang thân trống nâng một ngoại lệ với đường dẫn phần tử ổn định của nó thay vì âm thầm loại bỏ nội dung

MaximumContinuationDepth mặc định là 100.000 và giới hạn các thành phần sai định dạng liên tục trả về một phần tiếp nối không tiến triển

Kích thước trang section phải dương, lề và khoảng trống đồ nội thất không thể âm, và hình học tiêu đề đầu cộng chân trang phải để lại một hình chữ nhật thân dương

C++Builder

std::unique_ptr<THPDFDOMDocument> document(new THPDFDOMDocument());
THPDFDOMSection* section = document->AddSection();
section->Header = new THPDFDOMText(L"Report", "Header");
section->Body->AddText(L"Declarative content", "BodyText");

std::unique_ptr<THPDFDOMRenderer> renderer(new THPDFDOMRenderer());
THPDFDOMRenderStatistics statistics =
    renderer->Render(document.get(), pdf.get());

HPDFLayoutDOM.hpp được tạo ra xuất cùng các bề mặt tài liệu, kiểu, thành phần, bảng, section, trình dựng, và thống kê

API liên quan