RoyalMail中解码的Base64字符串未加载为PDF格式

时间:2017-03-17 16:19:28

标签: c# pdf base64

创建一个与RoyalMail对话的应用程序,以获取标签代码并尝试打印标签。在他们的文档a' printLabelResponse'它包含一个Base64字符串中的PDF,他们给出了一个例子:

JVBERi0xLjYKJeTjz9IKMSAwIG9iagpbL1BERi9JbWFnZUIvSW1hZ2VDL0ltYWdlSS9UZXh0XQpl
bmRvYmoKNCAwIG9iago8PC9MZW5ndGggNSAwIFIKL0ZpbHRlci9GbGF0ZURlY29kZQo+PgpzdHJl
YW0KeJwDAAAAAAEKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjgKZW5kb2JqCjYgMCBvYmoKPDwv
+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncA
AQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6
Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeo
MCBSCi9JbmZvIDMyIDAgUgovSURbPDZDM0VCNEREOEE2OTNEMTVDQUE4NkRCODJCNTc2MTIzPjw2
QzNFQjRERDhBNjkzRDE1Q0FBODZEQjgyQjU3NjEyMz5dCj4+CnN0YXJ0eHJlZgoxMzI1OTYKJSVF
T0YK

下面的代码是我用来创建PDF文件(base64Text是 上面的Base64编码字符串)

string filePath = Directory.GetCurrentDirectory() + @"\output_PDF.pdf";
byte[] base64TextBytes = Convert.FromBase64String(base64Text);
File.WriteAllBytes(filePath, base64TextBytes);

我已将其他PDF文件转换为Base64字符串并将其保存到文本文件中,然后将该文本复制粘贴到'标签中的soap / xml文件中。标记即我在本地阅读以模拟来自皇家邮政的邮件,并设法将其保存为成功打开的PDF格式。

我的代码来自上面的base64字符串的输出是:

%PDF-1.6
%����
1 0 obj
[/PDF/ImageB/ImageC/ImageI/Text]
endobj
4 0 obj
<</Length 5 0 R
/Filter/FlateDecode
>>
stream
x�    
 endstream
endobj
5 0 obj
8
endobj
6 0 obj
<</Length 7 0 R
/Filter/FlateDecode
>>
stream
x�3P0P0��P016R032219 00000 n 
0000032743 00000 n 
0000103489 00000 n 
0000103467 00000 n 
0000105070 00000 n 
0000104685 00000 n 
0000105419 00000 n 
trailer
<</Size 47
/Root 46 0 R
/Info 36 0 R
/ID[<3EE4406240B0CAF52A875D8627BD8575><3EE4406240B0CAF52A875D8627BD8575>]
>>
startxref
105491
%%EOF

然而,这不会在Adobe Acrobat阅读中打开,也不会打印。

这个Base64字符串是不正确的还是我读错了,还是别的? 非常感谢

1 个答案:

答案 0 :(得分:0)

我尝试使用我知道的工作转换它,并且无法在adobe reader中打开该文件。我在其他地方找到了一个不同的编码字符串,但它很有用你问题中的base64字符串格式不正确。