C#生成的PDF文件在PDF阅读器中无法打开。错误显示文件已损坏或损坏

时间:2016-11-11 06:58:25

标签: c# pdf binary-data

我正在尝试将imageData保存为服务器目录中的pdf文件。 Html5Canvas imageData被发送到服务器并在以字节数组转换后,尝试保存为PDF文件。文件在指定路径上成功生成,但生成的文件在大多数PDF阅读器(即Adobe Reader,Foxit阅读器等)中无法正确打开,并显示文件损坏或损坏但在MS Edge浏览器中正确打开的错误。我希望他们也能在普通的PDF阅读器中展示。能否请您提出解决方案。这是我的服务器端代码。

public static string SaveImage(string imageData, string userEmail, int quantity)
    {
        string completePath = @"~\user-images\";
        string imageName = "sample_file2.pdf";
        string fileNameWitPath = completePath + imageName;
        byte[] bytes = Convert.FromBase64String(imageData);
        File.WriteAllBytes(HttpContext.Current.Server.MapPath(fileNameWitPath), bytes);
    }

为此代码生成相同的输出

        FileStream fs = new FileStream(HttpContext.Current.Server.MapPath(fileNameWitPath), FileMode.OpenOrCreate);
        fs.Write(bytes, 0, bytes.Length);
        fs.Close();

也为此。

 using (FileStream fs = new FileStream(HttpContext.Current.Server.MapPath(fileNameWitPath), FileMode.Create))
        {

            using (BinaryWriter bw = new BinaryWriter(fs))
            {

                byte[] data = Convert.FromBase64String(imageData);

                bw.Write(data);

                bw.Close();
            }

        }

1 个答案:

答案 0 :(得分:1)

如果您只保存带有.PDF文件扩展名的光栅图像格式文件(如PNG或JPG文件),则不会将其作为PDF文件;它仍然是另一个扩展名的图像文件。因此它可能适用于某些浏览器,因为它们可能会进行文件格式检测,而不仅仅基于扩展。

要生成实际的PDF文件,您需要使用一些转换。考虑以下库之一: