Joh*_*aes 9 c# pdf visual-studio-2010 crystal-reports
我做了一个代码来生成PDF格式的Crystal Reports报告......但是它在用户的同一页面打开并进行了搜索并点击了按钮...有办法在新标签或页面中打开PDF ?
我的代码是:
private void OpenPDF()
{
ReportDocument Rel = new ReportDocument();
Rel.Load(Server.MapPath("../Reports/Test.rpt"));
BinaryReader stream = new BinaryReader(Rel.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat));
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.BinaryWrite(stream.ReadBytes(Convert.ToInt32(stream.BaseStream.Length)));
Response.Flush();
Response.Close();
}
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
在最简单的解释中,要打开新窗口或选项卡,页面的超链接应该将target属性设置为"_blank".
<a href="GeneratePDF.aspx" target="_blank">Link to open PDF in new window</a>
Run Code Online (Sandbox Code Playgroud)
或者您可以创建一些打开新窗口的Javascript.确保在页面的某个位置调用Javascript函数.
<script type="text/javascript">
function loadPDF() {
window.open('GeneratePDF.aspx','','scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,location=no,status=no');
}
</script>
Run Code Online (Sandbox Code Playgroud)
或者此代码将通知Web浏览器该文件是下载文件(而不是在浏览器窗口中查看的页面).我认为这是最好的方法,因为用户可以选择打开或保存PDF.所以这不符合您的要求,但您可能认为它更好.
private void OpenPDF(string downloadAsFilename)
{
ReportDocument Rel = new ReportDocument();
Rel.Load(Server.MapPath("../Reports/Test.rpt"));
BinaryReader stream = new BinaryReader(Rel.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat));
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment; filename=" + downloadAsFilename);
Response.AddHeader("content-length", stream.BaseStream.Length.ToString());
Response.BinaryWrite(stream.ReadBytes(Convert.ToInt32(stream.BaseStream.Length)));
Response.Flush();
Response.Close();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13626 次 |
| 最近记录: |