从虚拟路径打印pdf文件

时间:2015-08-29 08:51:25

标签: c# model-view-controller printing adobe-reader virtual-path

我正在使用此代码从驱动器D打印myDocument.pdf文件:这是有效的。

    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 reader会找到myDocument.pdf文件。

我的路径出了什么问题?提前谢谢。

1 个答案:

答案 0 :(得分: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""";

如果要使用相对于Web应用程序虚拟路径的文件,请尝试

string filePath = Server.MapPath("~/Content/report/Voucher.pdf");
proc.StartInfo.Arguments = string.Format(@"/p /h ""{0}""", filePath);

但请注意,这将从您运行Web应用程序的计算机上打印出来。如果您在计算机上运行Visual Studio,则它将从您的计算机打印出来。但是,如果您已将Web应用程序发布到某个服务器上的IIS并且正在从另一台计算机上查看您的Web应用程序,则PDF将尝试从服务器而不是从您的计算机进行打印。