将二进制数据转换为pdf文件

Mar*_*_PT 5 c#

我正在尝试将二进制数据转换为其原始格式".PDF",但我解决了这两种解决方案.第一个是一个小的,它创建一个PDF文件但它看起来是空的.第二个也创建一个PDF文件,但我无法打开它.错误在哪里?

第一个代码:

Conn.Open();
SqlCommand cmd = Conn.CreateCommand();
cmd.CommandText = "Select Artigo From Artigo WHERE (IDArtigo ='" + id + "')";
byte[] binaryData = (byte[])cmd.ExecuteScalar();

string s = Encoding.UTF8.GetString(binaryData);

File.WriteAllText("algo.pdf", s);
Run Code Online (Sandbox Code Playgroud)

第二个代码:

Conn.Open();
SqlCommand cmd = Conn.CreateCommand();
cmd.CommandText = "Select Artigo From Artigo WHERE (IDArtigo ='" + id + "')";
byte[] binaryData = (byte[])cmd.ExecuteScalar();

// Convert the binary input into Base64 UUEncoded output.
string base64String;
try
{
    base64String = System.Convert.ToBase64String(binaryData, 0, binaryData.Length);
}
catch (System.ArgumentNullException)
{
    MessageBox.Show("Binary data array is null.");
    return;
}

cmd.CommandText = "Select Titulo From Artigo WHERE (IDArtigo ='" + id + "')";
string titulo = (string)cmd.ExecuteScalar();

// Write the UUEncoded version to the output file.
System.IO.StreamWriter outFile;
try
{
    outFile = new StreamWriter(titulo + ".pdf", false, System.Text.Encoding.ASCII);
    outFile.Write(base64String);
    outFile.Close();
}
catch (System.Exception exp)
{
    System.Console.WriteLine("{0}", exp.Message);
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 10

您正在将文件写为文本,但您应该编写原始字节..PDF文件是二进制文件,而不是文本文件,因此实际上,您在第一个代码示例中填充了错误的数据.

尝试

    Conn.Open();
    SqlCommand cmd = Conn.CreateCommand();
    cmd.CommandText = "Select Artigo From Artigo WHERE (IDArtigo = @id)";
    cmd.Parameters.AddWithValue("@id", id);
    byte[] binaryData = (byte[])cmd.ExecuteScalar();
    File.WriteAllBytes(("algo.pdf", binaryData);
    string s = Encoding.UTF8.GetString(binaryData);
Run Code Online (Sandbox Code Playgroud)

如果您有更多问题,可以在http://msdn.microsoft.com/en-us/library/system.io.file.writeallbytes.aspx上记录System.IO.File.WriteAllBytes .

  • 这是我在多个问题和搜索中找到的最佳答案。我只想建议参数化此命令文本,而不是连接字符串。即使您将id变量设置为int且您并不担心安全性,出于一致性考虑,它仍然是一个好习惯。 (2认同)