Распечатать PDF-файл из виртуального пути
Я использую этот код для печати файла myDocument.pdf с диска D: который работает.
Process proc = new Process();
proc.StartInfo.Verb = "PrinTo";
proc.StartInfo.FileName = @"C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe";
proc.StartInfo.Arguments = @"/p /h D:myDocument.pdf";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.Start();
proc.WaitForInputIdle();
System.Threading.Thread.Sleep(1000);
if (false == proc.CloseMainWindow())
proc.Kill();
Но я хочу напечатать файл из папки внутри моего проекта, которая является Content/report/myDocument.pdf. я пытался изменить 'proc.StartInfo.Arguments = @"/p /h D:myDocument.pdf";' чтобы:
proc.StartInfo.Arguments = Server.MapPath("~/Content/report/myDocument.pdf");
proc.StartInfo.Arguments = @"Content/report/myDocument.pdf";
proc.StartInfo.Arguments "C:\Users\User\Documents\Visual Studio 2012\Projects\PDF\PDF\Content\report\myDocument.pdf";
Все это не работает, и Adobe Reader говорит, что файл не может быть найден.
Примечание: я удалил "/p /h", которая является командой для печати и минимизации Adobe Reader, просто чтобы попытаться найти Adobe MyDocument.pdf файл.
Что не так в моих путях? Заранее спасибо.
1 ответ
Вы пытались заключить имя файла в двойные кавычки?
proc.StartInfo.Arguments = @"""C:\Users\User\Documents\Visual Studio 2012\Projects\PDF\PDF\Content\report\Voucher.pdf""";
Поскольку имя файла содержит пробелы, возможно, Acrobat Reader пытался загрузить файл с именем C:\Users\User\Documents\Visual
Я полагаю, что не существует.
Если вы хотите восстановить /p
а также /h
переключатели, попробуйте
proc.StartInfo.Arguments = @"/p /h ""C:\Users\User\Documents\Visual Studio 2012\Projects\PDF\PDF\Content\report\Voucher.pdf""";
Если вы хотите использовать файл относительно виртуального пути веб-приложения, попробуйте
string filePath = Server.MapPath("~/Content/report/Voucher.pdf");
proc.StartInfo.Arguments = string.Format(@"/p /h ""{0}""", filePath);
Однако обратите внимание, что он будет распечатан с машины, на которой вы запускаете веб-приложение. Если вы запускаете его из Visual Studio на своем компьютере, он будет распечатан с вашего компьютера. Однако если вы опубликовали свое веб-приложение в IIS на каком-либо сервере и просматриваете его с другого компьютера, PDF-файл будет пытаться печатать с сервера, а не с вашего компьютера.