THotPDF.LinearizeOutput Property
Управляет тем, будет ли новый документ записан в упорядоченной по зависимостям линеаризованной раскладке для быстрого отображения первой страницы через HTTP-транспорт байтовых диапазонов
Объявления
// Delphi
property LinearizeOutput: Boolean;
// C++Builder
__property bool LinearizeOutput;
По умолчанию
False
Раскладка вывода
Если параметр включён до BeginDoc и EndDoc, HotPDF выполняет ограниченный проход вёрстки, а затем записывает поток назначения напрямую в линеаризованном порядке
- Словарь параметров линеаризации содержится в первых 1024 байтах
- Первая страница и её частные зависимости предшествуют разделам последующих страниц
- Общие зависимости сгруппированы так, чтобы читатели с поддержкой диапазонов могли избегать избыточных запросов
- Основной поток подсказок содержит таблицы подсказок по смещениям страниц и общим объектам
- Ранняя таблица перекрёстных ссылок поддерживает доступ к первой странице, а основная таблица перекрёстных ссылок завершает документ
Совместимость и ограничения
- Линеаризация требует PDF 1.2 или выше; HotPDF повышает более старую выбранную версию, если не включён
StrictVersionLock— в этом случае запись возбуждает исключение - Линеаризованный писатель выводит традиционные текстовые таблицы перекрёстных ссылок и нераспакованные косвенные объекты, даже если включены
UseXRefStreamилиUseObjectStreams - Формат таблиц подсказок использует 32-битные смещения, поэтому вывод размером 4 ГиБ и более отклоняется с понятным исключением
- Веб-сервер или транспорт хранилища должен поддерживать запросы байтовых диапазонов для быстрой доставки первой страницы
- Это свойство изменяет вывод создаваемого документа и не выполняет прогрессивную загрузку существующего удалённого PDF
Пример на Delphi
PDF := THotPDF.Create(nil);
try
PDF.FileName := 'fast-view.pdf';
PDF.Version := pdf17;
PDF.LinearizeOutput := True;
PDF.BeginDoc;
PDF.Canvas.TextOut(72, 72, 'First page');
PDF.EndDoc;
finally
PDF.Free;
end;
Пример на C++Builder
std::unique_ptr<THotPDF> pdf(new THotPDF(nullptr));
pdf->FileName = L"fast-view.pdf";
pdf->Version = pdf17;
pdf->LinearizeOutput = true;
pdf->BeginDoc();
pdf->Canvas->TextOut(72, 72, L"First page");
pdf->EndDoc();