【发布时间】:2018-07-08 20:19:47
【问题描述】:
我有一份显示在网页上的报告,用户一直在将此网页打印为 PDF。我需要的是网页在用户单击按钮时自动打印为 PDF(保存)到网站服务器上的某个位置。
iTextSharp 似乎不允许我将 PDF 保存为打印到 PDF 时的外观(保留 css 等),而且还有一些许可问题。 PrinceXML 看起来不错,但是太贵了。
有没有办法打开一个新的aspx页面然后打印到PDF服务器端?
【问题讨论】:
我有一份显示在网页上的报告,用户一直在将此网页打印为 PDF。我需要的是网页在用户单击按钮时自动打印为 PDF(保存)到网站服务器上的某个位置。
iTextSharp 似乎不允许我将 PDF 保存为打印到 PDF 时的外观(保留 css 等),而且还有一些许可问题。 PrinceXML 看起来不错,但是太贵了。
有没有办法打开一个新的aspx页面然后打印到PDF服务器端?
【问题讨论】:
您可以使用内置的 RLDC 报告。它是免费的,具有漂亮的设计和功能,并允许您打印为 PDF。您无需保存 PDF 文件并担心管理和删除它,只需将其打印到流中并使用流进行下载。
类似这样的:
Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string extension;
byte[] bytes = reportViewer.LocalReport.Render("PDF", null, out mimeType, out encoding,
out extension, out streamids, out warnings);
然后将bytes写入下载流。
Response.Buffer = true;
Response.Clear();
Response.ContentType = mimeType;
Response.AddHeader("content-disposition", "attachment; filename= filename" + "." + extension);
Response.OutputStream.Write(bytes, 0, bytes.Length);
Response.Flush();
Response.End();
【讨论】: