2011-12-21 7 views
3

На моей машине при выборе нескольких PDF-документов в Проводнике Windows щелкните правой кнопкой мыши и выберите Печать, Adobe Acrobat Reader открывается с минимальным доступом, и все документы тихо отправляются на принтер.Как Windows загружает PDF документы в формате PDF?

Я хочу сделать то же самое, что и Windows, но как это делается?

Я использую ProcessStartInfo с глаголом PrintTo, как вы можете видеть в предыдущем question. К сожалению, это все, кроме молчания, и у меня возникают большие проблемы при печати нескольких документов. Как узнать, когда печать приложения (обычно Adobe Reader) выполняется? Если запускать несколько процессов printTo в строке, один документ, кажется, открывается до того, как предыдущий закончен.

Я хотел бы избежать жесткого кодирования Adobe Reader, потому что некоторые из моих пользователей обменяли его на Foxit Reader или другие.

+0

У нас была такая же (и связанная) проблема и, наконец, использовалась [gsprint] (http://pages.cs.wisc.edu/~ghost/gsview/gsprint.htm) в качестве обходного пути. – Silas

+0

Первое, что я сделал бы, это проверить, что именно происходит на вашей машине, копаясь в 'regedit' (осторожно, конечно). – AakashM

+0

ОК @ Силас, я надеялся не прийти к такому выводу. =/ – Skywise

ответ

4

Я не знаю, можете ли вы сделать это с другими читателями PDF таким образом, чтобы эти зрители были заменой Plug-and-Play для 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 и печатает файл, чей путь должен быть полностью определены, при подавлении диалогового окна Печати , (Скопировано в папку с вопросом разработчиков.)

Существует также опция/n, которая «запускает отдельный экземпляр Acrobat или Adobe Reader, даже если он открыт». (Часто задаваемые вопросы о разработчике.) Это может быть использовано для запуска нескольких заданий печати параллельно, я полагаю.

я нашел еще одну ссылку командной строки на: Adobe Reader Command Line Reference

Так в основном, вы можете перебирать свой список PDF-файлов, и для каждого из них начать новый процесс печати с Process.Start вызова и ждать его, чтобы закрыть через Process.WaitForExit. Это заставит вашу программу появляться, и я ненавижу, когда программы зависают во время выполнения операций, поэтому вы действительно должны это делать в отмене BackgroundWorker, который сообщает о прогрессе и все еще оставляет ваш графический интерфейс несколько интерактивным.

+0

Спасибо, @djdanlib. Я уже подтвердил, что могу предположить, что Acrobat Reader присутствует, и поэтому я могу использовать ваше решение Acrobat Reader/t'. Он печатает, но добавление '/ h' не делает его сведенным к минимуму. – Skywise

Смежные вопросы