Я не знаю, сможете ли вы сделать это с другими программами просмотра PDF таким образом, чтобы эти программы просмотра заменяли Adobe Reader. Возможно, вам придется адаптировать его к каждой программе, которую вы хотите поддерживать. На самом деле не так сложно иметь Reader в своей системе, если это необходимо для выполнения работы, и большинство компьютеров поставляются с ней предустановленной.
Первое, что вам нужно знать, это то, что когда вы говорите ему печатать через этот глагол, через код или контекстное меню Проводника, вы делаете что-то вроде этого:
""C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe"" /p /h "%1"
Обратите внимание на аргументы: / p (указывает печатать) и / h (начало свернуто).
Есть еще один вариант. В документе Adobe Developer FAQ (http://partners.adobe.com/public/developer/en/acrobat/sdk/pdf/intro_to_sdk/DeveloperFAQ.pdf) говорится, что эта командная строка работает для каждого файла:
AcroRd32.exe /t path "printername" "drivername" "portname"
В документе указывается, что при этом запускается Adobe Reader и печатается файл, путь которого должен быть полностью указан, при этом закрывается диалоговое окно «Печать». (Скопировано из FAQ для разработчиков.)
Существует также опция / n, которая «запускает отдельный экземпляр Acrobat или Adobe Reader, даже если он в данный момент открыт». (Опять же, часто задаваемые вопросы для разработчиков.) Я думаю, это можно использовать для параллельного запуска нескольких заданий на печать.
Я нашел еще одну ссылку на командную строку по адресу: Справочник по командной строке Adobe Reader
Таким образом, вы можете перебирать свой список PDF-файлов, и для каждого из них начинать новый процесс печати с помощью вызова Process.Start и ждать его закрытия через Process.WaitForExit. Это заставит вашу программу зависать, и я ненавижу, когда программы зависают, когда они выполняют операции, так что вы должны действительно сделать это в отменяемом BackgroundWorker, который сообщает о прогрессе и все еще оставляет ваш графический интерфейс несколько интерактивным.