【发布时间】:2017-03-17 16:19:28
【问题描述】:
创建一个与 RoyalMail 对话以获取标签代码并尝试打印标签的应用程序。在他们的文档中,“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 字符串是不正确的,还是我读错了,还是别的什么? 非常感谢
【问题讨论】: