Member 13166671 Ответов: 2

Как распечатать PDF-документ в дуплексном режиме с помощью acrord32


Привет
У меня есть некоторый существующий код на C#, который отправляет PDF-файлы на принтер, и он отлично работает. Однако теперь мне нужно отправить PDF-файл в двустороннем формате и выбрать выходной лоток, но я не могу узнать, можно ли это сделать из AcroRD32.EXE и если да, то как. Мой существующий код автоматически обнаруживает новый документ и печатает его следующим образом:
Process proc = new Process();
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.Verb = "print";

//Define location of adobe reader/command line
//switches to launch adobe in "print" mode
proc.StartInfo.FileName = System.Configuration.ConfigurationManager.AppSettings["AdobeReaderFilePath"].ToString();
proc.StartInfo.Arguments = String.Format(@"/p /h {0}", pdfFileName);
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

proc.Start();
if (proc.HasExited == false)
{
    proc.WaitForExit(10000);
}

proc.EnableRaisingEvents = true;

proc.Close();
KillAdobe("AcroRd32");

Я не могу сделать это, используя значения по умолчанию на самом принтере, поэтому надеюсь на какой-то параметр, который позволяет контролировать параметры печати. Возможно ли это?

Заранее спасибо.

Что я уже пробовал:

В результате долгого поиска не удалось найти ни полного списка параметров AcroRD32, ни какой-либо достойной документации для него.

Richard MacCutchan

Попробуйте набрать acrord32 /h или /? в командной строке; он может перечислить параметры.

Member 13166671

Привет, Ричард. Хорошая мысль, но ни то, ни другое не работает. Использование /h игнорируется, а /? просто открывает интерфейс. Но все равно спасибо.

2 Ответов

Рейтинг:
2

Maciej Los

Там есть пакет NuGet: Шпиль.PDF 5.6.2[^], который позволяет печатать pdf-файлы с несколькими вариантами печати.

Видеть:

PdfDocument pdfdocument = new PdfDocument();
pdfdocument.LoadFromFile(pdfPathAndFileName);
pdfdocument.PrinterName = "SomePrinter";
pdfdocument.PrintDocument.PrinterSettings.Copies = 2;
pdfdocument.PrintDocument.Print();
pdfdocument.Dispose();


Как проверить, включен ли принтер для двусторонней печати?
//Indicate whether the printer supports duplex
bool isDuplex = pdf.PrintDocument.PrinterSettings.CanDuplex;
//Set the printer's duplex setting: Default, Simplex, Horizontal, Vertical
if(isDuplex)
{
    pdf.PrintDocument.PrinterSettings.Duplex = Duplex.[Default];
    //print
    pdf.PrintDocument.Print();
}


Member 13166671

Привет, Мацей. Спасибо за это. Я проверю Спайра.PDF и посмотрите, соответствует ли он моим потребностям. .Net показывает CanDuplex = false, но это может быть (и делается уже несколько лет), но я понимаю, что это потому, что принтер находится в сети, которая может скрыть некоторые характеристики. Может быть, это тоже будет проблемой для меня, я не знаю. Овации.

Maciej Los

Всегда пожалуйста.
Удачи вам!

Рейтинг:
1

Gerry Schmitz

Вам нужен принтер, который может обрабатывать "дуплекс"; обычно его называют "2-сторонней" или "двусторонней" печатью.

Вас интересуют "настройки принтера (диалогового окна)"; ничего общего с "Adobe".


Maciej Los

Коротко И По Существу!

Member 13166671

Привет, Джерри. Принтер действительно обрабатывает дуплекс, и старая программа, которая печатает с помощью MS Access, довольно счастливо печатает дуплекс на нем. Мне нужно было знать, как это сделать, когда я автоматически печатаю PDF-файл. Судя по всему, это не может быть сделано с AcroRD32, поэтому придется искать дальше. Овации

Maciej Los

Похоже, ты не понял слов Гери... Пожалуйста, прочтите их еще раз.

Member 13166671

Ну, суть в том, что мне нужно изменить настройки принтера, и, похоже, я не могу сделать это через AcroRD32. Это было то, что я пытался сделать, но, похоже, это не может быть сделано, поэтому попробую другие инструменты, как предложено ниже.