【问题标题】:Issues with downloading PDF file from source从源下载 PDF 文件的问题
【发布时间】:2016-06-20 10:36:09
【问题描述】:

我创建了一种从表单生成 pdf 文件的方法,它使用 itexsharp 保存到正确的路径,但问题是我无法下载它。

这是我的代码:

private void FillForm(Dictionary<string, string> dic)
{

    var pdfTemplate = HttpContext.Current.Server.MapPath("~/ress/GENE_15_04_2014.pdf"); //_pdfTemplet;

    var newFile = _newFileName + "_" + Guid.NewGuid() + ".pdf";

    _gNewFile = newFile.ToString();

    var pdfReader = new PdfReader(System.IO.File.ReadAllBytes(pdfTemplate));

    var pfileStream = new FileStream(string.Format(HttpContext.Current.Server.MapPath("~/ress/") + "{0}", newFile), FileMode.Create);

    var pdfStamper = new PdfStamper(pdfReader, pfileStream);
    var pdfFormFields = pdfStamper.AcroFields;

    foreach (var entry in dic)
    {
        pdfFormFields.SetField(entry.Key, entry.Value);
    }
    pdfStamper.FormFlattening = true;
    pdfStamper.JavaScript = "this.print(true);\r";
    pdfStamper.Writer.CloseStream = false;
    pdfReader.Close();
    pdfStamper.Close();
    UPContract.Update();
    pfileStream.Close();
    pdf.FilePath = string.Format("../Ress/{0}", Path.GetFileName(_gNewFile));

    Response.Clear();
    byte[] bytes = System.IO.File.ReadAllBytes(string.Format(HttpContext.Current.Server.MapPath("~/ress/") + "{0}", _gNewFile));
    Response.ContentType = "application/pdf";
    MemoryStream ms = new MemoryStream(bytes);
    Response.AddHeader("content-disposition", "attachment;filename=" + "fiche abonnement_" + _gNewFile + ".pdf");
    Response.Buffer = true;
    ms.WriteTo(Response.OutputStream);
    Response.Flush();
    Response.End();
}

【问题讨论】:

  • 除非您需要存档该文件,否则将 PDF 创建为服务器上的文件是个坏主意。您需要存档该文件吗?
  • 当然有特殊需要
  • 你还在@BrunoLowagie !
  • 是的,但这不是 iText 或 iTextSharp 问题,这是一个 C# 问题:如何读取文件的字节并将它们发送到 Response?我是 Java 开发人员,而不是 C# 开发人员,所以您必须询问其他人。另外:这个问题已经在 StackOverflow 上回答过很多次了,所以如果你想知道答案,你可能想搜索一些更老的问题。
  • 我无法下载。 - 你到底是什么意思?有错误信息吗?还是只有一个空白页?还是客户端电脑爆炸了?

标签: c# pdf pdf-generation itext


【解决方案1】:

如果你想传递一个文件,你可以跳过字节数组和MemoryStream,直接使用Response.WriteFile(string)

【讨论】:

  • 传文件没问题,问题是下载!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 1970-01-01
相关资源
最近更新 更多