[英]Open file in C#
在我的Aspx页面中,我有两个按钮,btnGenerateReceipt用于生成收据,而btnAddNew用于添加新收据。 btnGenerateReceipt的OnClick事件我正在生成并打开如下的收据。
protected void onGenerateReceipt(object sender, EventArgs e)
{
try
{
byte[] document = receiptByte;
Response.ClearContent();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-word";
Response.AddHeader("content-disposition", "inline;filename=" + "Receipt" + ".doc");
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.BinaryWrite(document);
//Response.Flush();
}
}
catch (Exception ex)
{
}
finally
{
//Response.End();
}
}
}
这会打开“打开/保存/取消”对话框,以下是我的问题,
任何想法?
服务器发送的内容由Web浏览器处理。 默认情况下,您无法从服务器端代码控制浏览器是否打开,保存或询问用户,因为这是浏览器设置。
编辑
关于生成PDF的第二个问题:有很多库可以生成PDF。 但是,如果您已经准备好Word文件,一种解决方案是将Word文档打印到PDF打印机,然后发送生成的PDF。
可以使用ShellExecute
或带有动词print
的Process
类来实现文档的print
,然后可以使用PDF打印机(例如PDF-Creator或Bullzip)来生成PDF文件。
这是我要尝试的方法,而不是“手动”生成PDF文件。
我需要Word文档自动打开而不显示对话框。
有关@Thorsten Dittmar答案的答案。
单击btnGenerateReceipt按钮后,第二个按钮的单击功能不会触发。
Asp.net使用无状态连接,因此您认为书面内容将保留在内存中。 我认为按照我的理解,它不起作用。 创建响应内容,然后将其写入响应并刷新。
如何生成并打开PDF文件而不是Word文档?
要生成pdf,请参考this 。 使用iTextSharp之类的库来生成pdf,然后将其导出/保存为pdf。
参考: ASP.NET 4:在新浏览器中打开HttpResponse吗?
Response.AppendHeader("Content-Disposition", "inline; filename=foo.pdf");
您需要设置Response对象的Content Type,并在标头中添加pdf的二进制形式。 有关详细信息,请参见这篇文章:参考: 从Asp.net页面打开PDF文件
private void ReadPdfFile()
{
string path = @"C:\Swift3D.pdf";
WebClient client = new WebClient();
Byte[] buffer = client.DownloadData(path);
if (buffer != null)
{
Response.ContentType = "application/pdf";
Response.AddHeader("content-length",buffer.Length.ToString());
Response.BinaryWrite(buffer);
}
}
参考链接:
ASP.NET 4:在新浏览器中打开HttpResponse吗?
检索信息后生成pdf文件
ASP.NET MVC:如何使浏览器打开并显示PDF,而不显示下载提示?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.