【问题标题】:Convert Div Content to PDF and save on server path将 Div 内容转换为 PDF 并保存在服务器路径上
【发布时间】:2014-01-05 06:30:38
【问题描述】:

我想将 Div 内容转换为 pdf 并将创建的 pdf 文件保存在服务器路径上,而不要求我保存文件(下载文件)。

我转换了 pdf 文件并将该文件保存在服务器路径中。

但在我的代码中,它还显示了我要删除的文件下载选项。

我不想将 pdf 文件另存为选项,因为我将创建的文件保存在服务器路径中。

下面是我的代码:

        string appPath = HttpContext.Current.Request.ApplicationPath;
        string path = Server.MapPath(appPath + "/Attachment/Test.pdf");
        if (File.Exists(path))
            File.Delete(path);
        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "attachment;filename=Panel.pdf");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        createDiv.RenderControl(hw);
        var output = new FileStream(path, FileMode.Create);
        StringReader sr = new StringReader(sw.ToString());
        iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(PageSize.A4, 10f, 10f, 100f, 0f);
        HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
        iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDoc, output);
        pdfDoc.Open();
        htmlparser.Parse(sr);
        pdfDoc.Close();
        Response.End();

谢谢, 希特什

【问题讨论】:

    标签: asp.net c#-4.0 pdf


    【解决方案1】:

    显示保存对话框的原因是您正在写入响应。如果您只想保存到本地磁盘,只需删除所有对响应的引用。然后,您可以执行 Response.Redirect(...) 或类似操作以将用户指向下一页。

    使用 MemoryStream

    如果您打算将 PDF 写入数据库,您应该使用 MemoryStream (see MSDN) 而不是 FileStream。然后您可以调用MemoryStream.ToArray() 方法,该方法将返回一个您可以存储在数据库中的字节数组。

    假设您使用的是实体框架:

    var output = new MemoryStream();
    //snip
    iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDoc, output);
    //snip
    myEntityFrameworkObject.Data = output.ToArray();
    DataContext.SaveChanges();
    

    【讨论】:

    • 谢谢。它工作正常。还有一个问题是,如果不保存 pdf 文件,我可以获得 pdf 文件的字节数组,因为我将 pdf 的字节保存到数据库中。
    • MemoryStream 用于将文件保存在内存中,而FileStream 用于访问文件系统。
    • 嗨,我不明白你的答案。你能在我的代码中给出我必须改变的地方吗?
    • 为了将来参考,你真的应该在新问题中提出新问题。或者在原始问题中包含这些详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2013-10-09
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    相关资源
    最近更新 更多