Question tableau d'octets en pdf


J'essaie de convertir le contenu d'un fichier stocké dans une colonne SQL en un fichier pdf.

J'utilise le morceau de code suivant:

byte[] bytes;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, fileContent);
bytes = ms.ToArray();
System.IO.File.WriteAllBytes("hello.pdf", bytes);

Le pdf généré est corrompu dans le sens où lorsque j'ouvre le pdf dans notepad ++, je vois un en-tête indésirable (qui est le même quel que soit le contenu du fichier). L'en-tête indésirable est NUL SOH NUL NUL NUL ....


25
2018-01-10 13:32


origine


Réponses:


Vous ne devriez pas utiliser le BinaryFormatter pour cela, il s'agit de sérialiser les types .Net dans un fichier binaire afin qu'ils puissent être relus comme des types .Net.

S'il est stocké dans la base de données, nous espérons que, en tant que varbinary - alors tout ce que vous avez à faire est d'obtenir le tableau d'octets à partir de cela (cela dépendra de votre technologie d'accès aux données - EF et Linq à SQL, par exemple, va créer un mappage qui rend trivial d'obtenir un tableau d'octets) et ensuite écrire dans le fichier comme vous le faites dans votre dernière ligne de code.

Avec un peu de chance - J'espère que fileContent voici le tableau d'octets? Dans quel cas tu peux juste faire

System.IO.File.WriteAllBytes("hello.pdf", fileContent);

48
2018-01-10 13:35