【问题标题】:convert base64Binary to pdf将base64Binary转换为pdf
【发布时间】:2010-12-10 06:20:16
【问题描述】:

我有 base64Binary 的原始数据。

string base64BinaryStr = "J9JbWFnZ......"

如何制作pdf文件?我知道它需要一些转换。请帮帮我。

【问题讨论】:

  • 您使用哪种语言?
  • 原始数据是要作图/绘图,还是显示在表格中,还是直接放入pdf作为原始数据?
  • c# 被用作开发语言。

标签: c# pdf binary


【解决方案1】:

第 1 步是将 base64 字符串转换为字节数组:

byte[] bytes = Convert.FromBase64String(base64BinaryStr);

第 2 步是将字节数组保存到磁盘:

System.IO.FileStream stream = 
    new FileStream(@"C:\file.pdf", FileMode.CreateNew);
System.IO.BinaryWriter writer = 
    new BinaryWriter(stream);
writer.Write(bytes, 0, bytes.Length);
writer.Close();

【讨论】:

  • Base-64 字符数组的长度无效。在setp 1中
  • @novicedeveloper:这通常意味着您的字符串中有一些奇怪的字符,使其成为无效的 Base-64 字符串。字符串末尾是否恰好有两个双引号 ("")?
  • 或者这个字符串被传递到查询字符串中的 ASP.Net 页面?
  • 我没有在查询字符串中传递它。
  • 想知道为什么这会写入 pdf 但不编码图像。我的 pdf 打不开。
【解决方案2】:
using (System.IO.FileStream stream = System.IO.File.Create("c:\\temp\\file.pdf"))
{
    System.Byte[] byteArray = System.Convert.FromBase64String(base64BinaryStr);
    stream.Write(byteArray, 0, byteArray.Length);
}

【讨论】:

  • 问题是关于将字符串字节转换为pdf
  • 你的评论是关于我的回答
【解决方案3】:

您需要做的就是通过任何 Base64 解码器运行它,该解码器会将您的数据作为字符串并传回一个字节数组。然后,只需在文件名中使用 pdf 写出该文件。 或者,如果您要将其流式传输回浏览器,只需将字节写入输出流,并在标头中标记适当的 mime-type。

大多数语言都内置了用于转换为 Base64 或从 Base64 转换的方法。或者使用您的特定语言的简单 Google 将返回您可以使用的大量实现。来回切换到 Base64 的过程非常简单,即使是新手开发人员也可以实现。

【讨论】:

    【解决方案4】:

    先将Bas64字符串转成byte[],写入文件。

    byte[] bytes = Convert.FromBase64String(base64BinaryStr); 
    File.WriteAllBytes(@"FolderPath\pdfFileName.pdf", bytes );
    

    【讨论】:

      【解决方案5】:

      base64BinaryStr - 来自网络服务 SOAP 消息

      byte[] bytes = Convert.FromBase64String(base64BinaryStr); 
      

      【讨论】:

        【解决方案6】:

        此代码不会在硬盘上写入任何文件。

        Response.AddHeader("Content-Type", "application/pdf");
        Response.AddHeader("Content-Length", base64Result.Length.ToString());
        Response.AddHeader("Content-Disposition", "inline;");
        Response.AddHeader("Cache-Control", "private, max-age=0, must-revalidate");
        Response.AddHeader("Pragma", "public");
        Response.BinaryWrite(Convert.FromBase64String(base64Result));
        

        注意:变量 base64Result 包含 Base64 字符串:“JVBERi0xLjMgCiXi48/TIAoxI...”

        【讨论】:

        • 注意:我们必须在代码中删除这一行:code Response.AddHeader("Content-Length", base64Result.Length.ToString()); code 因为某些浏览器无法下载整个文件。在我们擦除字节数量后,一切正常。让浏览器自己进行字节大小计算! ;-)
        猜你喜欢
        • 1970-01-01
        • 2017-08-22
        • 2013-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-30
        • 2016-03-17
        • 2016-06-15
        相关资源
        最近更新 更多