Как распечатать PDF с помощью C#

Я пытаюсь решить эту проблему в течение почти 2 дней. В сети много более-менее хороших решений, но ни одно идеально не подходит под мою задачу.

Задача:

  • Программная печать PDF
  • Сделайте это со стационарным принтером
  • Не позволяйте пользователю делать более одной кнопки. Кнопка _Щелчок
  • Сделай это тихо -чем больше, тем лучше
  • Сделайте это на стороне клиента

Первые решения:

Сделайте это с помощью Forms.WebBrowser

Если у нас установлен Adobe Reader, есть плагин для отображения PDF-файлов в веб-браузере. С помощью этого решения у нас есть хороший предварительный просмотр, а с помощью webbrowserControlName.Print ()мы можем активировать элемент управления для печати его содержимого.

Проблема -у нас все еще есть PrintDialog.


Запустите AcroRd32.exe с параметрами запуска

. Следующая команда CMD позволяет нам использовать Adobe Reader для печати нашего PDF-файла.

InsertPathTo..\AcroRd32.exe /t "C :\sample.pdf" "\printerNetwork\имя_принтера"

Проблемы -нам нужен абсолютный путь к AcroRd32.exe | открывается окно Adobe Reader, и его нужно открывать до тех пор, пока задание на печать не будет готово.


Использовать предустановки Windows

Process process = new Process();

process.StartInfo.FileName = pathToPdf; 
process.StartInfo.Verb = "printto";
process.StartInfo.Arguments = "\"" + printerName + "\""; 
process.Start();

process.WaitForInputIdle();
process.Kill();

Проблема -окно Adobe Reader по-прежнему открывается, но после завершения печати оно обычно закрывается.

Решение -убедить клиента использовать Foxit Reader (не использовать последние две строки кода ).


Преобразование страниц PDF в Drawing.Image

Я понятия не имею, как это сделать с помощью кода, но когда я заставлю это работать, все остальное — просто кусок пирога. Printing.PrintDocument может удовлетворить все требования.


У кого-нибудь есть идея получить Drawing.Image из этих PDF-файлов или другой подход, как это сделать?

Наилучшие пожелания, Макс

21
задан yms 22 March 2013 в 13:55
поделиться