property Transparent: Boolean; // read only
Transparent возвращает True, когда активная страница содержит любой
объект, эффективная альфа которого меньше 1.0 или который ссылается на графическое
состояние, включающее прозрачность — мягкие маски, значения непрозрачности
(CA / ca), нестандартные режимы наложения
(/BM) или группы прозрачности (спецификация PDF 1.7, раздел 11).
Это тот же флаг, который PDFium проверяет внутренне для принятия решения о том,
должна ли страница обрабатываться через его растеризатор прозрачных страниц
Свойство равно False, когда Active равно False
или когда страница полностью непрозрачна. Прозрачные страницы отрисовываются
немного дороже — PDFium должен выделить альфа-канал и скомпоновать каждый объект
с фоном страницы — поэтому раннее определение прозрачности позволяет вызывающим
выбрать правильную цель вывода (32-битный ARGB TBitmap, наложение
водяного знака PDF, альфа-учитывающий путь принтера)
Значение является свойством отдельной страницы; переберите все страницы, если нужен
ответ для всего документа “есть ли прозрачность где-либо?”. Комбинируйте
с цветом Background при отрисовке в плоское растровое изображение:
прозрачная страница на фоне clWhite даёт сглаженный вывод, тогда как
отрисовка на прозрачной поверхности сохраняет альфа для последующей компоновки
var Bmp: TBitmap;
Bmp := TBitmap.Create;
try
if Pdf1.Transparent then
Bmp.PixelFormat := pf32bit
else
Bmp.PixelFormat := pf24bit;
Pdf1.RenderToBitmap(Bmp, 1.0);
finally
Bmp.Free;
end;