ASP.Net C#将PDF保存到目录

时间:2016-07-19 21:26:57

标签: c# asp.net pdf

我的网页应该如下: 当用户填写表单的字段并点击提交时,将为用户生成PDF文件(填写用户输入的信息),并将该PDF文件保存在目录中。

我所拥有的是,当用户点击提交时,为用户生成PDF:

Failed to load resource: net::ERR_FILE_NOT_FOUND      file:///android_asset/www/build/js/Reflect.js.map
Failed to load resource: net::ERR_FILE_NOT_FOUND      file:///android_asset/www/build/js/es6-shim.map

以下是我在目录中保存PDF的尝试,

        var pdfPath = Path.Combine(Server.MapPath(path_name));
        String file_name_pdf = "Test.pdf";
        var pdfContents = PDFHelper.GeneratePDF(pdfPath, formFieldMap);
        PDFHelper.ReturnPDF(pdfContents, file_name_pdf);

当我运行上面的内容时,我得到一个文件:System.Byte [] 保存在PDF目录中,请告知我缺少什么,以便将生成的PDF保存在目录中。

请求的每个方法的代码:

    var pdfPath = Path.Combine(Server.MapPath(path_name));
    var formFieldMap = PDFHelper.GetFormFieldNames(pdfPath);

    string username = "Test";
    string password = "12345";      
    String file_name_pdf = "Test.pdf";

    var pdfContents = PDFHelper.GeneratePDF(pdfPath, formFieldMap);
    WebRequest request = WebRequest.Create(Server.MapPath("~/PDF/" + pdfContents));
    request.Method = WebRequestMethods.Ftp.UploadFile;

    request.Credentials = new NetworkCredential(username, password);
    Stream reqStream = request.GetRequestStream();
    reqStream.Close();

PDFHelper代码:

    protected void generate_pdf()
    {
            String path_name = "~/Forms/Form1.pdf";
            var pdfPath = Path.Combine(Server.MapPath(path_name));
            String file_name_pdf = "Test.pdf";
            var pdfContents = PDFHelper.GeneratePDF(pdfPath, formFieldMap);
            PDFHelper.ReturnPDF(pdfContents, file_name_pdf);
    }

    protected void save_pdf()
    {
           String path_name = "~/PDF/";
           var pdfPath = Path.Combine(Server.MapPath(path_name));
           var formFieldMap = PDFHelper.GetFormFieldNames(pdfPath);

           string username = "Test";
           string password = "12345";      
           String file_name_pdf = "Test.pdf";

           var pdfContents = PDFHelper.GeneratePDF(pdfPath, formFieldMap);
           WebRequest request = WebRequest.Create(Server.MapPath("~/PDF/" + pdfContents));
           request.Method = WebRequestMethods.Ftp.UploadFile;

           request.Credentials = new NetworkCredential(username, password);
           Stream reqStream = request.GetRequestStream();
           reqStream.Close();
     }

1 个答案:

答案 0 :(得分:4)

PDFHelper.GeneratePDF返回PDF文件的字节数组。据我所知,您需要将此PDF存储在本地文件夹中。在这种情况下,您可以使用

using (var stream = File.Create(Path.Combine(pdfPath, file_name_pdf)))
{
      stream.Write(pdfContents, 0, pdfContents.Length);
}

File.WriteAllBytes(Path.Combine(pdfPath, file_name_pdf), pdfContents)

另请参阅Can a Byte[] Array be written to a file in C#

所以,你的方法应该是那样的

protected void save_pdf()
{
   String path_name = "~/PDF/";
   var pdfPath = Path.Combine(Server.MapPath(path_name));
   var formFieldMap = PDFHelper.GetFormFieldNames(pdfPath);

   string username = "Test";
   string password = "12345";      
   String file_name_pdf = "Test.pdf";

   var pdfContents = PDFHelper.GeneratePDF(pdfPath, formFieldMap);

   File.WriteAllBytes(Path.Combine(pdfPath, file_name_pdf), pdfContents);

   WebRequest request = WebRequest.Create(Server.MapPath("~/PDF/" + pdfContents));
   request.Method = WebRequestMethods.Ftp.UploadFile;

   request.Credentials = new NetworkCredential(username, password);
   Stream reqStream = request.GetRequestStream();
   reqStream.Close();
}