Змінні бекенди рендерингу сторінок
HotPDF може спрямовувати растровий рендеринг завантажених сторінок через визначений застосунком бекенд, зберігаючи наявний рендерер як значення за замовчуванням без конфігурації та необов'язковий резервний варіант
Убудований рідний бекенд
PDF.UseNativeGDIRenderBackend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
THPDFNativeGDIRenderBackend надає усталений рідний рендерер GDI Windows через той самий публічний контракт бекенда, який використовують зовнішні реалізації
Його можливості оголошують prbcNative, prbcDeterministic, prbcTransparency, prbcColourManagement та prbcThreadSafe без заявлення prbcDeviceAcceleration
SIMD-бекенд рядків розгортання
var
Backend: IHPDFPageRenderBackend;
begin
Backend := THPDFSIMDScanlineRenderBackend.Create;
PDF.PageRenderBackend := Backend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
end;
THPDFSIMDScanlineRenderBackend попередньо перевіряє повний скомпільований список відтворення, а потім записує підтримувані заливки прямокутників DeviceRGB або DeviceGray безпосередньо в кінцеву 32-бітову поверхню бітмапа пакетами по 64 байти та векторними хвостами по 16 байт
Складені прямокутні шляхи дотримуються правила заповнення nonzero або even-odd як одна операція малювання, зберігаючи отвори, перетворені напрямки підшляхів і раніше намальований вміст; растеризація перевіряє скасування в обмежених пакетах і відкидає часткові поверхні
Бекенд приймає збереження та відновлення стану графіки, ортогональне масштабування, матриці трансляції та повороту на прямі кути, зміни кольору заливки, прямокутники, оператори заливки та скидання шляху; текст, довільні шляхи, обведення, зображення, прозорість, обрізання, патерни, затінення, непідтримувані колірні простори та неортогональні перетворення відхиляються до виділення бітмапа
Його можливості оголошують prbcSIMD, prbcThreadSafe та prbcDeterministic без заявлення прискорення пристрою, прозорості чи керування кольором
THPDFSIMDRenderBackendStatistics звітує про прямі поверхні, відрендерені прямокутники, векторні блоки, скалярні пікселі хвоста та точний відхилений оператор, коли потрібен резервний варіант
Контракт власного бекенда
Реалізуйте IHPDFPageRenderBackend і призначте його на THotPDF.PageRenderBackend
THPDFPageRenderBackendRequest надає запитаний індекс сторінки та DPI, скомпільований THPDFPageDisplayList і розв'язувач THPDFRenderDocAccess для потоків, зображень, шрифтів, необов'язкового вмісту, керування кольором і скасування
Бекенд може перевіряти кожен скомпільований оператор через THPDFPageDisplayList.GetToken без повторного розбору вмісту сторінки
Поверніть True із щойно виділеним TBitmap, щоб передати володіння бітмапом HotPDF; поверніть False без бітмапа, щоб відхилити запит
Конкурентність та резервний варіант
Бекенди, що оголошують prbcThreadSafe, можуть виконуватися одночасно через обидва паралельні конвеєри рендерингу сторінок
Бекенди без цієї можливості серіалізуються через виділений замок виклику, тоді як компіляція списку відтворення залишається конкурентною
rbfpSoftwareFallback повторює недоступний, відхилений або невдалий запит бекенда наявним рендерером, тоді як rbfpFail викликає EHPDFRenderBackend
Бекенд може за бажанням реалізувати IHPDFPageRenderBackendFailureInfo або повернути діагностичну причину на запит, щоб одночасні відхилення зберігали причину для точного запиту рендерингу
Зміна бекенда недійснює записи кешу відрендерованих сторінок у пам'яті та на диску, тому зображення з різних рендерерів ніколи не змішуються
Діагностика та візуальний воріт
THPDFRenderBackendStatistics звітує про спроби, успіхи, помилки, програмні резервні варіанти, серіалізовані виклики, час виконання, назву бекенда та останню причину помилки
Убудована фікстура паритету використовує перекривну прозорість і оголошує максимальний Delta E 0, помилку RGB альфа-композитингу 0 та лічильник відмінних пікселів 0 проти рендерера за замовчуванням на Win32 і Win64