Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
下载签名的pdf文件时遇到问题#_Pdf_C# 4.0_Signed_Downloading Website Files - Fatal编程技术网

下载签名的pdf文件时遇到问题#

下载签名的pdf文件时遇到问题#,pdf,c#-4.0,signed,downloading-website-files,Pdf,C# 4.0,Signed,Downloading Website Files,我有一个签名的pdf与Adobe签名做得很好。当我想下载此文档时,我的问题就开始了 通过webmethod,我获得签名文件的字节数。在这之前没有问题 如果我试图将文件保存在服务器中,当我打开文件时,一切都是正确的。但是如果我打开它时试图下载它,签名就错了 这是adobe reader中的错误: “签名数据的范围由一系列意外字节定义。 详细信息:签名的字节范围无效“ 这是我下载文件的方式: HttpContext.Current.Response.ContentType = "applicatio

我有一个签名的pdf与Adobe签名做得很好。当我想下载此文档时,我的问题就开始了

通过webmethod,我获得签名文件的字节数。在这之前没有问题

如果我试图将文件保存在服务器中,当我打开文件时,一切都是正确的。但是如果我打开它时试图下载它,签名就错了

这是adobe reader中的错误:

“签名数据的范围由一系列意外字节定义。 详细信息:签名的字节范围无效“

这是我下载文件的方式:

HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename= Factura.pdf");
HttpContext.Current.Response.AddHeader("Content-Length", newStream.Length.ToString());
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.BufferOutput = true;
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.OutputStream.Write(newStream.GetBuffer(), 0, newStream.GetBuffer().Length);
HttpContext.Current.Response.OutputStream.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();

有人能帮我解决这个问题吗?

您发送的字节比标题中公布的字节多。执行
newStream.ToArray()
并仅使用字节数组。要检查的另一件事是,如果您确实拥有
newStream
中的所有字节,请将其保存到要检查的文件中(从
ToArray()

感谢您的回答,我更改了这一行:
HttpContext.Current.Response.AddHeader(“内容长度”,newStream.Length.ToString())
对于另一个:
HttpContext.Current.Response.AddHeader(“Content Length”,newStream.ToArray().Length.ToString());
和我有相同的问题。我可以检查
newStream
是否拥有所有字节。因为我在下载文件之前保存了它,并且我可以完美地读取它