Я обнаружил, что задаю тот же вопрос недавно. После некоторого тестирования выясняется, что подход с использованием URI для данных был лучшим выбором.
Хранение множества изображений в кодировке Base64 может быть дорогим. Но накладные расходы на создание временных файлов, потоковую передачу данных изображений, а затем ожидание, пока XHTMLRenderer ударит этот временный файл 4 раза, прежде чем его очистить, также обременительны.
В моих экспериментах изображения Base64 оказались лучшим подходом. При этом, я не уверен, в какой степени это останется верным для больших изображений. В моем случае я тестировал с иконками 32x32, логотипами 80x80, гистограммами 400x240 и одной графикой 600x400. Разница в накладных расходах была значительной со всем, кроме графики 600x400, где она стала действительно незначительной.
(Примечание для Joop Eggen. В моем случае генерация PDF критична ко времени . Пользователь нажимает кнопку PDF и ожидает, что загрузка начнется немедленно.)