itextsharp - 将页面转换为 PDF 并自动保存到临时文件夹而无需打开下载对话框
itextsharp - convert page to PDF and auto save to a temp folder without opening a download dialog
大家早上好,我找到了示例代码,可以让我使用 itextsharp 库将当前页面保存为 pdf,然后自动将其保存到站点内的临时文件夹中。但它一直在做的一件事是它不断触发浏览器提示我下载或保存文件。该文件已经保存在一个临时文件夹中,我只是想以某种方式禁用该浏览器对话框下载。请指教。非常感谢任何帮助。
谢谢
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=RequestSummaryReport.pdf");
HttpContext.Current.Response.Charset = "";
HttpContext.Current.Response.ContentType = "application/pdf";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
iTextSharp.text.Document pdfDocument = new iTextSharp.text.Document(PageSize.A3, 45, 5, 5, 5);
//PdfWriter writer = PdfWriter.GetInstance(pdfDocument, Response.OutputStream);
PdfWriter writer = PdfWriter.GetInstance(pdfDocument, new FileStream(Server.MapPath("~/temps/") + "mypdf.pdf", FileMode.CreateNew));
pdfDocument.Open();
HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());
ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false);
IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(pdfDocument, writer)));
XMLWorker worker = new XMLWorker(pipeline, true);
XMLParser xmlParse = new XMLParser(true, worker);
this.Page.RenderControl(htw);
StringReader sr = new StringReader(sw.ToString());
xmlParse.Parse(sr);
xmlParse.Flush();
pdfDocument.Close();
//Response.Write(pdfDocument);
Response.End();
所以你想把它保存在服务器上?你想在不提示用户保存的情况下将 pdf 显示到浏览器吗?也许 this 之前 post 对 SO 的回答会有所帮助。我记得该行为可能因浏览器(IE、Chrome、Firefox、Safari)而异。使用时:
Response.AddHeader("Content-Disposition", "inline;filename=somefile.ext")
浏览器将尝试将 pdf 呈现给浏览器。
如果删除以下代码行,浏览器将不会提示您保存文件:
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=RequestSummaryReport.pdf");
大家早上好,我找到了示例代码,可以让我使用 itextsharp 库将当前页面保存为 pdf,然后自动将其保存到站点内的临时文件夹中。但它一直在做的一件事是它不断触发浏览器提示我下载或保存文件。该文件已经保存在一个临时文件夹中,我只是想以某种方式禁用该浏览器对话框下载。请指教。非常感谢任何帮助。 谢谢
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=RequestSummaryReport.pdf");
HttpContext.Current.Response.Charset = "";
HttpContext.Current.Response.ContentType = "application/pdf";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
iTextSharp.text.Document pdfDocument = new iTextSharp.text.Document(PageSize.A3, 45, 5, 5, 5);
//PdfWriter writer = PdfWriter.GetInstance(pdfDocument, Response.OutputStream);
PdfWriter writer = PdfWriter.GetInstance(pdfDocument, new FileStream(Server.MapPath("~/temps/") + "mypdf.pdf", FileMode.CreateNew));
pdfDocument.Open();
HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());
ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false);
IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(pdfDocument, writer)));
XMLWorker worker = new XMLWorker(pipeline, true);
XMLParser xmlParse = new XMLParser(true, worker);
this.Page.RenderControl(htw);
StringReader sr = new StringReader(sw.ToString());
xmlParse.Parse(sr);
xmlParse.Flush();
pdfDocument.Close();
//Response.Write(pdfDocument);
Response.End();
所以你想把它保存在服务器上?你想在不提示用户保存的情况下将 pdf 显示到浏览器吗?也许 this 之前 post 对 SO 的回答会有所帮助。我记得该行为可能因浏览器(IE、Chrome、Firefox、Safari)而异。使用时:
Response.AddHeader("Content-Disposition", "inline;filename=somefile.ext")
浏览器将尝试将 pdf 呈现给浏览器。
如果删除以下代码行,浏览器将不会提示您保存文件:
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=RequestSummaryReport.pdf");