Печать .doc .pdf файлов из ASP.NET приложения

Entheos
Дата: 26.04.2007 16:39:00
Дядя А загружает на сервер n-ное количество файлов. Дяде В с другого компьютера нужно загрузить сразу все эти файлы и распечатать на локальном принтере, желательно с минимальным его участием (пара-тройка кликов) и по выбранному дядей В порядку. Можно ли это сделать средствами ASP.NET и если да, то как?

Пробовал так, но такой вариант запускает Acrobat Reader на сервере и ищет соответственно файл на сервере. А нужно на локальную машину сгрузить и оттуда уже печатать.

// This part is printing pdf

Process x = new Process();

x.StartInfo.FileName=@"c:\1\1.pdf";
x.StartInfo.Verb="Print";

x.StartInfo.CreateNoWindow=false;
x.Start();

Спасибо.
Нахлобуч
Дата: 26.04.2007 17:10:20
Выливайте файл в поток (например, из IHttpHandler), установив Content-Disposition и ContentType
Entheos
Дата: 26.04.2007 17:22:00
Выливайте файл в поток (например, из IHttpHandler), установив Content-Disposition и ContentType


простите, это для меня китайская грамота, я ведь ещё только учусь.
можно чуть подробнее?
Нахлобуч
Дата: 26.04.2007 17:41:35
Лехко :) Только звиняйте за код на VB.NET.
Стало быть, кусок
\ncontext.Response.Clear()\ncontext.Response.ContentType = "image/jpeg"\ncontext.Response.Cache.SetExpires(DateTime.Now.AddDays(7))\ncontext.Response.Cache.SetCacheability(HttpCacheability.Public)\ncontext.Response.Cache.SetValidUntilExpires(True)\nhotelImage.Save(context.Response.OutputStream, ImageFormat.Jpeg)\ncontext.Response.End()\n
требуется заменить на то, что требуется вам -- а именно, надо прочитать файл на сервера (из БД или из файла - я уж не знаю), выставить ContentType, добавить заголовок Сontent-Disposition" (это будет имя файла, с которым браузер предложит сохранить файл, если такое потребуется):
\ncontext.Response.AppendHeader("Content-Disposition", String.Format("inline;filename=tourml-{0}.tourml", priceID))\n
и, наконец, записать упомянутый файл в context.Response.OutputStream. Ну и кэширование настроить по желанию.

context.Response.AppendHeader("Content-Disposition", String.Format("inline;filename=tourml-{0}.tourml", priceID))
Entheos
Дата: 26.04.2007 20:43:00
ЛехкоУлыбка Только звиняйте за код на VB.NET.
Стало быть, кусок

context.Response.Clear()
context.Response.ContentType = "image/jpeg"
context.Response.Cache.SetExpires(DateTime.Now.AddDays(7))
context.Response.Cache.SetCacheability(HttpCacheability.Public)
context.Response.Cache.SetValidUntilExpires(True)
hotelImage.Save(context.Response.OutputStream, ImageFormat.Jpeg)
context.Response.End()
требуется заменить на то, что требуется вам -- а именно, надо прочитать файл на сервера (из БД или из файла - я уж не знаю), выставить ContentType, добавить заголовок Сontent-Disposition" (это будет имя файла, с которым браузер предложит сохранить файл, если такое потребуется):

context.Response.AppendHeader("Content-Disposition", String.Format("inline;filename=tourml-{0}.tourml", priceID))
и, наконец, записать упомянутый файл в context.Response.OutputStream. Ну и кэширование настроить по желанию.

context.Response.AppendHeader("Content-Disposition", String.Format("inline;filename=tourml-{0}.tourml", priceID))


спасибо!