2014-07-25 5 views
0

Я пытаюсь сохранить ответ веб-API, который находится в PDF в PDF-файле.Сохранение двоичного файла в формате PDF

Вот что я делаю:

FileStream fs = File.Create("API_response.pdf", 5120, FileOptions.None); 
BinaryWriter F = new BinaryWriter(fs); 
//ASCIIEncoding asen = new ASCIIEncoding(); 
byte[] ba = Encoding.Unicode.GetBytes(response.data); 

F.Write(ba); 
F.Close(); 
fs.Close(); 

Но когда я пытаюсь открыть API_response.pdf файл, он говорит, что файл поврежден и не может быть восстановлен.

Это ответ я получаю от API и который я демпинг в API_response.pdf файле

%PDF-1.3 
%âãÏÓ 
1 0 obj<</Producer(htmldoc 1.8.27 Copyright 1997-2006 Easy Software Products, All Rights Reserved.)/CreationDate(D:20140725043937+0500)>>endobj 
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 160/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/minus/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj 
3 0 obj<</Length1 1279/Length2 92942/Length3 544/Filter/FlateDecode/Length 93901  >>stream 
xœ»s”dm³=X¶Ùå,WuÙ¶mÛ¶mÛ¶mÛ¶ÝÕe›]˜~¿û»ßoîÌ?³2WžóìˆØODœg­<¹’”P^‰FÀØÎÐDÔÎÖ™†–ž kacèâ$cg+M£hbæø²Â’*[8[›ü/+©ª‰£“…-çû 9š8ÿ„ 
œÿº+›» 

Пожалуйста, дайте мне знать, что я не хватает?

+4

Что такое 'response' здесь? И почему вы используете * text * encoding (ASCII) для * двоичных * данных? По сути, вам следует избегать делать что-либо * с текстом здесь. –

+0

Я абсолютно не знаком с CSharp. Я не уверен в использовании какой-либо конкретной кодировки. Пожалуйста, поправьте меня. –

+0

Привет @JonSkeet Я внес некоторые изменения. Это правильный путь? Однако я не могу исправить ошибку! –

ответ

1

BinaryWriter для серийный номер данные в двоичном формате. Это не для записи произвольных данных без изменений в поток. Фактически, поток уже может это сделать.

+0

, и какой код вы бы предложили? –

Смежные вопросы