2014-07-25 5 views
0

Je tente d'enregistrer une réponse API Web en format PDF dans un fichier PDF.Enregistrement d'un fichier binaire au format PDF

Voici ce que je fais:

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(); 

Mais quand je suis en train d'ouvrir le fichier API_response.pdf il est dit que le fichier est endommagé et ne peut pas être réparé.

Ceci est la réponse que je reçois de l'API et que je suis le dumping dans le fichier 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ÿ„ 
œÿº+›» 

S'il vous plaît laissez-moi savoir ce que je suis absent?

+4

Qu'est-ce que 'response' ici? Et pourquoi utilisez-vous un encodage * text * (ASCII) pour les données * binaires *? Fondamentalement, vous devriez éviter de faire * n'importe quoi * avec du texte ici. –

+0

Je suis complètement nouveau à CSharp. Je ne suis pas sûr d'utiliser un encodage spécifique. Veuillez me corriger. –

+0

Bonjour @JonSkeet J'ai fait quelques changements. Est-ce une bonne façon de faire? Cependant je ne suis pas capable de corriger l'échec! –

Répondre

1

BinaryWriter est pour sérialisation données dans un format binaire. Ce n'est pas pour écrire des données arbitraires sans changement dans un flux. En fait, un flux peut déjà le faire.

+0

alors quel code suggérez-vous? –