DotImage имеет встроенные классы для этого. Если все ваши JPEG-файлы находятся в одной папке, вы можете сделать это:
FileSystemImageSource source = new FileSystemImageSource(pathToDirectory, "*.jpg", true);
PdfEncoder encoder = new PdfEncoder();
using (FileStream outstm = new FileStream(outputPath, FileMode.Create)) {
encoder.Save(outstm, source, null);
}
, который будет передавать все изображения, заканчивающиеся на .jpg, в выходной файл PDF. Каждая страница будет соответствовать размеру изображения (это можно установить). Насколько я знаю, нет практического ограничения на количество страниц, которые вы можете кодировать (я уверен, что вы превысите лимит PDF, прежде чем исчерпаете свою кучу памяти). В ходе тестирования я пропустил сотни изображений без нагрузки на машину.
Сжатие можно контролировать с помощью события, если требуется более точное управление (т. Е. Уровень сжатия JPEG или использование Flate или JPEG 2000). Цветовые профили будут включены, если они присутствуют в формате JPEG, и, если вы хотите PDF / A-1b, это также будет сделано. Также есть некоторая базовая поддержка для настройки оглавления, если хотите.
Отказ от ответственности - я работаю в Atalasoft и лично написал классы FileSystemImageSource и PdfEncoder (а также почти все базовые инструменты генерации PDF).