我的问题是基于我从API调用中获取的一串数据。我将原始数据传递给FromBase64String,然后将字节数组编码回字符串。我期待一个有效的pdfsharp返回,我将其保存到文件中。以下解码的字符串值都不包含正确的数据。我知道原始base64编码的api返回字符串是有效的,因为我可以在notepadd ++中打开它并使用base64解码器来创建格式正确的pdf文档。
byte[] todecode_byte = Convert.FromBase64String(data);
string decodedUTF7 = Encoding.UTF7.GetString(todecode_byte);
string decodedUTF8 = Encoding.UTF8.GetString(todecode_byte);
我认为它应该是最接近的表示(notepadd ++转换版本)是UTF7。但是在文档中的嵌入图像中似乎存在一些丢失的数据。与工作文档相比,UTF8有一些结构差异。
例如...... 我的控制...... %PDF-1.7 %ÓôÌá 1 0 obj <<
... UTF7 %PDF-1.7 %ÓôÌá 1 0 obj <<
... UTF8 %PDF-1.7 %���� 1 0 obj <<
但是,再一次,UTF7版本似乎有一些问题围绕着文档中进一步嵌入的图像。无论哪种方式,两个版本都创建一个88k pdf文档,作为空白页打开。当保存为pdf文档时,控件(使用notepadd ++)大约是该大小的一半,并将打开显示所有正确的信息。
答案 0 :(得分:1)
我期待一个有效的pdfsharp返回,我将其保存到文件中。
如果它是一个PDF文件,我不会尝试将其转换为字符串 at all 。它根本不是文本 - 它是二进制数据。它应该简单:
byte[] binaryData = Convert.FromBase64String(data);
File.WriteAllBytes("file.pdf", binaryData);