Властивість THotPDF.LinearizeOutput
Контролює, чи записується новостворений документ у впорядкованому за залежностями лінеаризованому макеті для швидкого показу першої сторінки через передачу HTTP байтовими діапазонами
Оголошення
// Delphi
property LinearizeOutput: Boolean;
// C++Builder
__property bool LinearizeOutput;
Стандарт
False
Макет виводу
Коли ввімкнено перед BeginDoc та EndDoc, HotPDF виконує обмежений прохід макета, а потім записує потік призначення безпосередньо в лінеаризованому порядку
- Словник параметрів лінеаризації міститься у перших 1024 байтах
- Перша сторінка та її приватні залежності передують пізнішим розділам сторінок
- Спільні залежності згруповані так, щоб читачі з підтримкою діапазонів могли уникнути надлишкових запитів
- Основний потік підказок містить таблиці підказок зміщень сторінок та спільних об'єктів
- Рання таблиця перехресних посилань підтримує доступ до першої сторінки, а головна таблиця перехресних посилань завершує документ
Сумісність та обмеження
- Лінеаризація вимагає PDF 1.2 або пізнішої; HotPDF підвищує старішу обрану версію, якщо не ввімкнено
StrictVersionLock, у цьому разі запис викликає виняток - Лінеаризований записувач видає традиційні текстові таблиці перехресних посилань та нерозпаковані непрямі об'єкти, навіть коли ввімкнено
UseXRefStreamабоUseObjectStreams - Формат таблиць підказок використовує 32-бітні зміщення, тож вивід розміром 4 GiB або більше відхиляється з ясним винятком
- Веб-сервер або транспорт сховища має підтримувати запити байтових діапазонів для забезпечення швидкої доставки першої сторінки
- Ця властивість змінює вивід згенерованого документа й не завантажує поступово наявний віддалений 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();