2009-07-17 7 views
3

Вот моя ситуация:Изменение настроек принтера по умолчанию из C#

  • Я занимаюсь разработкой C# надстройку для программы 3-й партии
  • Эта программа (Revit) использует свои собственные методы печати и подвергает их через его API
  • Я пишу утилиту печати, которая использует эти методы для печати в разных местах, включая принтер PDF
  • Я использую PDF995 в качестве принтера и изменяю его файл .ini для его автоматизации.
  • В основном я вызываю метод печати в API, который печатает активный чертеж на указанный принтер.

Моя проблема заключается в том, что в PDF995, если вы переходите к настройкам печати в Windows, по умолчанию по умолчанию устанавливается «портрет». Мне нужен пейзаж. Эти настройки, похоже, переопределяют все, что я установил в Revit API, поэтому мне нужен способ изменения настроек Windows.

Я попробовал этот код:

PrintDocument printDocument = new PrintDocument(); 
printDocument.PrinterSettings.PrinterName = "PDF995"; 
printDocument.DefaultPageSettings.Landscape = true; 

перед вызовом функции печати в API, но это не имеет никакого значения. Я не вижу способа редактировать pdf995 ini, чтобы установить эти параметры. Это настройки окон, которые мне нужно переопределить.

Я видел код C++ в сети, которую я могу вызвать, чтобы делать что-то с принтерами, но не могу найти пример изменения настроек по умолчанию.

Может ли кто-нибудь указать мне правильное направление?

ответ

2

Я имел хороший успех, используя следующие компоненты:

http://www.merrioncomputing.com/Download/PrintQueueWatch/index.htm http://printqueuewatch.codeplex.com/Wiki/View.aspx?title=Home

Эта коллекция делает доступными все виды полезных опций печати. Основное внимание уделяется мониторингу очереди печати, но из памяти доступны опции для изменения настроек принтера и свойств задания.

+0

Выглядит фантастически. Я собираюсь сделать это для моего проекта – jle

0

Я думаю, что многие настройки из использования Autodesk.Revit.DB.PrintManager являются «заполнителями», но если принтер контролирует эти параметры, значение, перенесенное на него Revit, игнорируется. Я попытался установить .PrintToFileName с полным путем, но создание PDF в BlueBeam по-прежнему отправляет файл в MyDocuments, откуда я должен его скопировать. Пробовали ли вы копировать свой PDF995 в PDF995X (например) и модифицировать его по умолчанию для параметра «Пейзаж» (в то время как PDF995 сохраняет значение по умолчанию «Портрет»)? Я использовал этот метод раньше, когда принтер настаивает на использовании сохраненных значений по умолчанию вместо запрошенных.