Convert pdf file received in string variable to byte array in C#
我正在尝试用C语言开发一个应用程序,它从Service1(第三方)获取数据,处理数据,然后将数据发送到Service2(第三方)。
我尝试接收、处理和发送的数据是一个PDF文件
从Service1,我正在接收字符串变量中的PDF文件。
例如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| response.Content ="%PDF-1.4
1 0 obj
<<
/Pages 2 0 R
/Type /Catalog
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [ 3 0 R 17 0 R ]
/Count 2
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/Resources <<
/XObject << /Im0 8 0 R >>
/ProcSet 6 0 R
>>
/MediaBox [0 0 ..." |
现在,Service2要求PDF数据采用byte[]格式
如何将响应内容(即字符串)转换为字节[]?
FY-
我试过下面的方法,但没用。我可以打开文件,但它显示所有垃圾值。
1
| byte[] bitmapData = Encoding.UTF8.GetBytes(response.Content); |
更新:解决
我刚发现不是service1以字符串格式发送数据,而是我使用了restsharp中的字符串变量IRestResponse.Content,而不是使用了byte(字节)变量IRestResponse.RawBytes。
- stackoverflow.com/questions/16072709/&hellip;副本
- 好吧,我已经看过那篇文章,也尝试了不同的方法,但是我仍然没有得到正确格式的数据。
- "我可以打开文件"是什么意思?
- 我的意思是之前我用的是byte[]bitmapdata=encoding.ascii.getbytes(response.content);…之后我试图打开PDF文件,但PDF阅读器说"文件已损坏"或类似的东西。
- PDF字符串上的
是这样的?如果是这种情况,那么字符串包含scaped(modified)字符。必须用换行符替换。
- 从Service1,我正在接收字符串变量中的PDF文件。-这是个问题。在C中,字符串包含Unicode字符。PDF文件包含字节。
- 对。这就是我在调试模式中看到的情况。如何用换行符替换?我不明白……两个不一样吗?
- 是的,Wimmel。这就是我认为的问题所在……但由于Service1来自第三方著名的开发人员,我放弃了这种想法。
- 如果用文本编辑器打开文件,会看到什么?
- 类似于此的内容-%pdf-1.4 1 0 obj<.>endobj 2 0 obj<.>endobj 3 0 obj<.>/procset 6 0 r>>/mediabox[0 0 0
- 看起来不错(假设你有多行,而不是一行)。很难说到底发生了什么。如果你能得到原始的PDF文件并测试它们之间的差异,那么它可能会很清楚。对不起的。
- 我实际上没有源文件/原始文件。只需知道Service1以这种格式发送PDF数据。NVM,谢谢。
- 我同意@wimmel:只要你有一个pdf字符串,你很可能已经损坏了它。不能以原始字节访问Web服务1响应吗?
- 是的。只是又看了一遍,看到了……实际上,我在使用restsharp调用服务,我是在引用响应中的字符串内容变量。刚才看到还有另一个变量rawbytes是byte[]。无论如何,再次感谢你们所有人。我会更新我的帖子。
- 当问题解决后,你应该做一个实际的答案,而不是你问题的附录,并且在你被允许的时候尽快接受这个答案(我知道你必须等几个小时才能接受自己的答案)。
- 谢谢,IrestResponse.rawbytes工作得很好:)
我刚发现不是service1以字符串格式发送数据,而是我使用了restsharp中的字符串变量IRestResponse.Content,而不是使用了byte(字节)变量IRestResponse.RawBytes。