Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#进程对象不';t打开PDF_C#_Pdf - Fatal编程技术网

C#进程对象不';t打开PDF

C#进程对象不';t打开PDF,c#,pdf,C#,Pdf,我正在动态创建一个PDF文件。创建后,我想打开pdf文件。为此,我使用以下代码: System.Diagnostics.Process p = new System.Diagnostics.Process(); p = new System.Diagnostics.Process(); p.StartInfo.FileName = CreatePDF(); // method that creats my pdf and returns the full path

我正在动态创建一个PDF文件。创建后,我想打开pdf文件。为此,我使用以下代码:

    System.Diagnostics.Process p = new System.Diagnostics.Process();
    p = new System.Diagnostics.Process();

    p.StartInfo.FileName = CreatePDF(); // method that creats my pdf and returns the full path

    try
    {
        if (!p.Start())
            Controller.Error = "Opening acrobat failed..";
    }
    catch(Exception ex)
    {
        Controller.Error = "Create PDF::" + ex.Message;
    }

当执行这段代码时,什么也没发生,我也不知道;我没有得到任何错误。我做错了什么?

Asp.net?我要做的是获取内存流并将其写入响应流,如下所示:

Response.ContentType = "application/pdf"; 
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", file.FileName)); 
Response.BinaryWrite(file.FileBytes); 
Response.Flush(); 
Response.End();
对于windows窗体,我想看看如何使用Foxit Reader。我有一个关于直接从foxit打印的问题。您可以打开类似的窗口

编辑:要创建附件,请添加对System.Net.Mail的引用,并执行以下操作:

var stream = GetTheFileAsStream();
var attachment = new Attachment(stream);

Asp.net?我要做的是获取内存流并将其写入响应流,如下所示:

Response.ContentType = "application/pdf"; 
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", file.FileName)); 
Response.BinaryWrite(file.FileBytes); 
Response.Flush(); 
Response.End();
对于windows窗体,我想看看如何使用Foxit Reader。我有一个关于直接从foxit打印的问题。您可以打开类似的窗口

编辑:要创建附件,请添加对System.Net.Mail的引用,并执行以下操作:

var stream = GetTheFileAsStream();
var attachment = new Attachment(stream);

更新:

由于这是一个ASP.NET应用程序,因此此代码将不起作用。它无法与承载ASP.NET的服务器的桌面交互


如果打算为从浏览器访问的用户显示PDF,则其代码完全不同。

更新:

由于这是一个ASP.NET应用程序,因此此代码将不起作用。它无法与承载ASP.NET的服务器的桌面交互


如果打算为从浏览器访问的用户显示PDF,则其代码完全不同。

我不清楚这是ASP.NET应用程序还是Winforms。如果是Winforms,那么

using (Process p = new Process())
{
    p.StartInfo.RedirectStandardOutput = false;
    p.StartInfo.FileName = @"C:\foo.pdf";
    p.StartInfo.UseShellExecute = true;
    p.Start();
    p.WaitForExit();             
}
。。。会很好的

如果这是ASP.NET MVC,那么您应该查看控制器的FileResult类型和文件方法

public ActionResult GetFile()
{
    return File("foo.pdf", "application/pdf");
}

。。。因为这正是它的用途。

我不清楚这是ASP.NET应用程序还是Winforms。如果是Winforms,那么

using (Process p = new Process())
{
    p.StartInfo.RedirectStandardOutput = false;
    p.StartInfo.FileName = @"C:\foo.pdf";
    p.StartInfo.UseShellExecute = true;
    p.Start();
    p.WaitForExit();             
}
。。。会很好的

如果这是ASP.NET MVC,那么您应该查看控制器的FileResult类型和文件方法

public ActionResult GetFile()
{
    return File("foo.pdf", "application/pdf");
}

。。。因为这正是它的目的。

CreatePDF()返回项目的完整路径,包括文件名:C:\\path\to\\file.pdf。这是一个ASP.NET应用程序。这在ASP.NET应用程序中不起作用,因为它需要与服务器的桌面交互才能显示PDF。那么,您有什么建议?我什么时候可以使用Process打开我的PDF文件?要在电子邮件中发送PDF,不需要显示它。没错,但也可以查看PDF文件。因此,我想显示PDF并以attchentCreatePDF()格式发送PDF,返回项目的完整路径,包括文件名:C:\\path\to\\file.PDF。这是一个ASP.NET应用程序。这在ASP.NET应用程序中不起作用,因为它需要与服务器的桌面交互才能显示PDF。那么,您有什么建议?我什么时候可以使用Process打开我的PDF文件?要在电子邮件中发送PDF,不需要显示它。没错,但也可以查看PDF文件。因此,我想展示PDF,并将PDF作为attchentI发送。我也尝试了这个方法,这个方法确实有效。但是我还想发送一封带有pdf作为附件的电子邮件,然后从文件字节创建一个附件。我也尝试了这个方法,这个方法确实有效。但是我还想发送一封带有pdf作为附件的电子邮件,然后从文件bytes.ok创建附件。酷。因此,更新问题以说明您正在使用的堆栈可能是值得的。我不确定你选择的答案是否是最好的。我认为Catz的一个更好的答案是,它向您展示了如何在ASP.NET.ok中实现这一点。酷。因此,更新问题以说明您正在使用的堆栈可能是值得的。我不确定你选择的答案是否是最好的。我认为Catz的一个更好的答案是,它向您展示了如何在ASP.NET中实现这一点。