【问题标题】:PDF file cannot be opened in adobe upon download from website but can be opened in Edge从网站下载的PDF文件无法在adobe中打开,但可以在Edge中打开
【发布时间】:2017-03-16 15:59:20
【问题描述】:

我有一个运行 aspx 的网络应用程序,它有点像旧版应用程序。在提交过程中,用户将支持文件(通常是转换为pdf的图片)上传到我们的sql server,在那里它们以二进制文件的形式存储,并且可以在审批期间的不同时间再次下载。

但是,我们现在刚刚开始遇到一个问题,即我们的用户无法在 adobe 中打开 pdf 并得到可怕的“文件已损坏且无法修复”。错误信息。它们仍然可以在 MS Edge 中打开,因此它们实际上并未损坏。我已经验证了 pdf 在上传之前可以正常打开。

HttpPostedFile file = this.attachmentUploader.PostedFile;
if (file == null)
{
    file = Session["postedFile"] as HttpPostedFile;
}

if (file != null)
{
    var fileName = this.attachmentUploader.FileName;
    fileName = fileName.Length >= 100 ? string.Concat(fileName.Substring(0, 50).Trim(), ".pdf") : fileName;
    Attachment attachment = new Attachment()
    {
        FileName = fileName,
        File = this.attachmentUploader.FileBytes
    };

    db.Attachments.Add(attachment);
    db.SaveChanges();
}

这是下载代码

byte[] file = null;
// Code here to pull file from db
if (file != null)
{
    Response.Buffer = true;
    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Disposition",     "attachment;filename=support_doc.pdf");
    Response.OutputStream.Write(file, 0, file.Length);
}

任何帮助表示赞赏!

【问题讨论】:

  • “它们仍然可以在 MS Edge 中打开,因此它们实际上并没有损坏。” - 这是错误的。仅仅因为一位观众,可能是偶然的,正确地显示了实际上可能是垃圾的内容,并不意味着数据不是垃圾。如果您共享 PDF 的好坏版本,以便比较和分析损坏情况,这可能会有所帮助。

标签: c# sql pdf adobe corrupt


【解决方案1】:

下载的文件实际上由两个连接的文件组成,实际的 PDF 和一个 HTML 文件。

HTML 文件大小接近 70 KB,在没有外部 JavaScript 和图像的情况下,它看起来像这样:

[--- 出于隐私原因删除图片 ---]

我假设在您的“下载代码”之后,其他一些代码会将此 HTML 添加到输出中。

您可能想要搜索该代码,或者您可能只想关闭Response.OutputStream 并在Response.OutputStream.Write(file, 0, file.Length) 之后立即完成响应。


根据 PDF 规范,PDF 处理器必须从包含交叉引用信息的末尾开始读取 PDF,但就 PDF 语法而言,手头的文件有近 70 KB 的垃圾。

因此,任何 PDF 查看器都可以将文件视为无效而拒绝。

【讨论】:

  • @KeithR。请注意,即使您从答案中删除了图片,它也会保留在修订历史记录中。我建议标记以引起版主注意,说明您想删除图像,并在消息中说明您的原因。版主可以联系员工,该员工可以从修订历史记录中删除图像。如果这是您的意图,请对问题执行相同操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多