C#进程对象不';t打开PDF
我正在动态创建一个PDF文件。创建后,我想打开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
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中实现这一点。