Chirag Sudra Ответов: 1

Печать в Microsoft print to PDF не работает на хост-компьютере?


Привет,

Я пытаюсь печатать непосредственно на принтере со стороны сервера, передавая имя принтера объекту PrintDocuemt (). Ниже приведены коды, которые отлично работают при запуске из localhost, но застревают при запуске из размещенного приложения на IIS. Я пытаюсь распечатать документ в pdf с помощью принтера microsofts по умолчанию "Microsoft Print to PDF" в windows 10/

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

var doc = new PrintDocument();
               doc.PrintPage += new PrintPageEventHandler(ProvideContent);
               if (TempData.Peek("PrinterName") != null && TempData.Peek("PrinterName").ToString() != "")
               {
                   doc.PrinterSettings.PrinterName = TempData.Peek("PrinterName").ToString();
               }

               doc.Print();
               doc.Dispose();

1 Ответов

Рейтинг:
1

OriginalGriff

Установлен ли на сервере драйвер печати PDF? Если это не так, то нет, это не сработает ...


Chirag Sudra

PDF-драйвер находится на этой машине, и он отлично работает из других приложений/команд печати

OriginalGriff

Затем вам нужно начать добавлять код регистрации, чтобы точно узнать, что происходит.
Например, что находится в TempData.Peek("имя принтера")?
Какое значение имеет свойство PrinterName?

Вы смотрели, чтобы увидеть? Или вы предположили, что они правы, потому что это сработало в dev?

Chirag Sudra

Нет, я не предполагал и уже зарегистрировал имя принтера из TempData в текстовом файле & имя принтера правильно передается объекту принтера.

OriginalGriff

Вы удивитесь, сколько их у себя ... :вздыхать:
(И если вы что - то пробовали, то это хорошая идея, чтобы сказать нам-вместе с любыми результатами: мы не можем видеть ваш экран!)

Итак, имя принтера выглядит правильно. Что именно происходит? Какие-нибудь исключения, сообщения, сбои? Попадает ли он в обработчик событий?

Chirag Sudra

Я вызываю метод печати с помощью вызова Ajax. Там нет исключения или предупреждения/сообщения об ошибке. Он просто застревает на доке.Строка Print() и в результате ajax-вызов ждут ответа.

OriginalGriff

Быстрый просмотр справочного источника говорит о том, что это может быть проблема безопасности: если это не принтер по умолчанию (а я предполагаю, что это не так) и PrintSettingsDialog не отображается (и он не должен быть в веб-приложении) Затем он начинает обход стека и проверку разрешений безопасности:
https://referencesource.microsoft.com/#System-да.Чертеж/commonui/System/чертеж/печать/PrintDocument.cs,fd14c6ca79baa9bd
https://referencesource.microsoft.com/#mscorlib/system/security/codeaccesspermission.cs,088ae839a8c7e684

Так... Я думаю, что вам придется поставить этот вопрос на ваш веб - сервер admin / hosting service-возможно, IIS нуждается в дополнительных разрешениях для использования драйвера PDF (или его выходной папки), и только они смогут понять, что происходит. Хотя, возможно, вам придется отказаться от этого на пару уровней выше "уровня технической поддержки 1"!

У меня был бы очень большой соблазн сказать "К черту это!" и сбросить MS PDF writer в пользу встроенного класса C# writer: на этом сайте их довольно много:
https://www.google.co.uk/search-что?q=c%23+pdf+writer+site%3Acodeproject.com&oq=c%23+pdf+writer+site%3Acodeproject.com&aqs=chrome..69i57j69i58.663j0j9&sourceid=chrome&ie=UTF-8