Pluggable Page Render Backends

HotPDF có thể định tuyến dựng bitmap trang đã nạp qua một backend do ứng dụng định nghĩa trong khi vẫn giữ renderer hiện có làm mặc định không cấu hình và dự phòng tùy chọn

Built-in native backend

PDF.UseNativeGDIRenderBackend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);

THPDFNativeGDIRenderBackend phơi bày renderer GDI gốc Windows đã được thiết lập qua cùng hợp đồng backend công khai được dùng bởi các triển khai ngoài

Các khả năng của nó khai báo prbcNative, prbcDeterministic, prbcTransparency, prbcColourManagement, và prbcThreadSafe mà không tuyên bố prbcDeviceAcceleration

Backend scanline SIMD

var
  Backend: IHPDFPageRenderBackend;
begin
  Backend := THPDFSIMDScanlineRenderBackend.Create;
  PDF.PageRenderBackend := Backend;
  Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
end;

THPDFSIMDScanlineRenderBackend preflight toàn bộ display list đã biên dịch, rồi ghi các nét fill hình chữ nhật DeviceRGB hoặc DeviceGray được hỗ trợ thẳng vào bề mặt bitmap 32-bit cuối qua các lô 64-byte và các đuôi vector 16-byte

Đường path hình chữ nhật compound tuân theo fill rule nonzero hoặc even-odd như một phép tô duy nhất, giữ nguyên các lỗ, hướng subpath đã biến đổi và nội dung đã tô trước đó; rasterization kiểm tra việc triệt tiêu theo từng lô có giới hạn và loại bỏ các bề mặt chỉ hoàn thành một phần

Backend nhận lưu/phục hồi trạng thái đồ họa, tỉ lệ trực giao, ma trận tịnh tiến và xoay vuông góc, đổi màu fill, hình chữ nhật, toán tử fill và đặt lại đường dẫn; văn bản, đường dẫn tùy ý, nét, ảnh, transparency, clip, pattern, shading, không gian màu không hỗ trợ và transform không trực giao sẽ từ chối trước khi cấp phát bitmap

Các năng lực của nó khai báo prbcSIMD , prbcThreadSafe và prbcDeterministic mà không nhận thiết bị tăng tốc, transparency hay quản lý màu

THPDFSIMDRenderBackendStatistics báo các bề mặt trực tiếp, hình chữ nhật kết xuất, block vector, pixel đuôi vô hướng và toán tử bị từ chối chính xác khi cần dự phòng

Custom backend contract

Triển khai IHPDFPageRenderBackend và gán nó cho THotPDF.PageRenderBackend

THPDFPageRenderBackendRequest cung cấp chỉ mục trang và DPI được yêu cầu, THPDFPageDisplayList đã biên dịch, và một bộ giải quyết THPDFRenderDocAccess cho stream, ảnh, font, nội dung tùy chọn, quản lý màu, và hủy bỏ

Một backend có thể kiểm tra từng toán tử đã biên dịch qua THPDFPageDisplayList.GetToken mà không phân tích lại nội dung trang

Trả về True với một TBitmap mới được cấp phát để chuyển quyền sở hữu bitmap cho HotPDF; trả về False không có bitmap để từ chối yêu cầu

Concurrency and fallback

Backend khai báo prbcThreadSafe có thể chạy đồng thời qua cả hai pipeline dựng trang song song

Backend không có khả năng đó được tuần tự hóa qua một khóa gọi chuyên dụng trong khi biên dịch display-list vẫn đồng thời

rbfpSoftwareFallback thử lại một yêu cầu backend không khả dụng, bị từ chối, hoặc thất bại với renderer hiện có, trong khi rbfpFail ném EHPDFRenderBackend

Backend có thể tùy chọn triển khai IHPDFPageRenderBackendFailureInfo hoặc trả về lý do chẩn đoán theo từng yêu cầu để các lời từ chối chạy đồng thời vẫn giữ nguyên lý do của đúng lần kết xuất đó

Thay đổi backend làm mất hiệu lực các mục cache trang đã dựng trong bộ nhớ và bền vững nên ảnh từ các renderer khác nhau không bao giờ bị trộn lẫn

Diagnostics and visual gate

THPDFRenderBackendStatistics báo cáo số lần thử, thành công, thất bại, dự phòng phần mềm, lời gọi được tuần tự hóa, thời gian trôi qua, tên backend, và lý do thất bại cuối cùng

Fixture tương đương tích hợp dùng độ trong suốt chồng lấn và khai báo Delta E tối đa 0, lỗi RGB alpha-compositing 0, và số pixel khác nhau 0 so với renderer mặc định trên Win32 và Win64

Các API liên quan