二进制数据转换为PDF文件 [英] Convert binary data to a pdf file

查看:222
本文介绍了二进制数据转换为PDF文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想一个二进制数据转换成原始格式.PDF,但任的解决方案,我有我的braek建置。首先是一个小家伙,它会创建一个PDF文件,但它显示为空。第二个也创造了一个PDF文件,但我不能打开它。在哪里?是误差



首先代码:

  Conn.Open (); 
的SqlCommand CMD = Conn.CreateCommand();
cmd.CommandText =选择威盛ARTiGO从威盛ARTiGO WHERE(IDArtigo ='+身份证+');
字节[] = binaryData(字节[])cmd.ExecuteScalar();

字符串s = Encoding.UTF8.GetString(binaryData);

File.WriteAllText(algo.pdf,S);



二代码:

  Conn.Open(); 
的SqlCommand CMD = Conn.CreateCommand();
cmd.CommandText =选择威盛ARTiGO从威盛ARTiGO WHERE(IDArtigo ='+身份证+');
字节[] = binaryData(字节[])cmd.ExecuteScalar();

//将二进制输入的Base64 UUENCODED输出。
串base64String;

{
base64String = System.Convert.ToBase64String(binaryData,0,binaryData.Length);
}
赶上(System.ArgumentNullException)
{
MessageBox.Show(二进制数据数组为空);
的回报;
}

cmd.CommandText =选择TITULO从威盛ARTiGO WHERE(IDArtigo ='+身份证+');
串TITULO =(字符串)cmd.ExecuteScalar();

//写UUENCODED版本到输出文件。
System.IO.StreamWriter不过outFile;

{
=不过outFile新的StreamWriter(TITULO +.PDF,假的,System.Text.Encoding.ASCII);
outFile.Write(base64String);
outFile.Close();
}
赶上(System.Exception的EXP)
{
的System.Console.WriteLine({0},exp.Message);
}


解决方案

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



尝试

  Conn.Open(); 
的SqlCommand CMD = Conn.CreateCommand();
cmd.CommandText =选择威盛ARTiGO从威盛ARTiGO WHERE(IDArtigo ='+身份证+');
字节[] = binaryData(字节[])cmd.ExecuteScalar();
File.WriteAllBytes((algo.pdf,binaryData);
字符串s = Encoding.UTF8.GetString(binaryData);

System.IO.File.WriteAllBytes在 http://msdn.microsoft.com/en-us/library/system.io.file.writeallbytes.aspx 如果您有更多的问题。


I am trying to convert a binary data to its original format ".PDF," but either of the solutions I have braek my hed. The first is a little one, it creates a PDF file but it appears empty. The second one also creates a PDF file, but I can't open it. Where is the error?

First code:

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);

Second code:

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);
}

解决方案

You are writing the file as text, but you should be writing the raw bytes. A .PDF file is a binary file, not a text file, so in effect, you're filling it with the wrong data in your first code sample.

Try

    Conn.Open();
    SqlCommand cmd = Conn.CreateCommand();
    cmd.CommandText = "Select Artigo From Artigo WHERE (IDArtigo ='" + id + "')";
    byte[] binaryData = (byte[])cmd.ExecuteScalar();
    File.WriteAllBytes(("algo.pdf", binaryData);
    string s = Encoding.UTF8.GetString(binaryData);

System.IO.File.WriteAllBytes is documented at http://msdn.microsoft.com/en-us/library/system.io.file.writeallbytes.aspx if you have more questions.

这篇关于二进制数据转换为PDF文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆